Ich poste diese Antwort, um den Kommentar im Code von OP @ Tri-Vuong zu adressieren - was mein Hauptgrund für meinen Besuch auf dieser Seite war:
Ich möchte den Spion außer Kraft setzen ... hier und es ein wenig anders machen
Keine der bisherigen Antworten befasst sich mit diesem Punkt, daher werde ich das Gelernte veröffentlichen und auch die anderen Antworten zusammenfassen.
@Alissa nannte es richtig , wenn sie erklärt , warum es eine schlechte Idee, Satz ist isSpy
zu false
- effektiv auf einem Spion Spionage was in der Auto-Teardown Verhalten von Jasmin keine funktionierende länger als gedacht. Ihre Lösung (im OP-Kontext platziert und für Jasmine 2+ aktualisiert) war wie folgt:
beforeEach(() => {
var spyObj = spyOn(obj,'methodName').and.callFake(function(params){
})
})
it("should do the declared spy behavior", () => {
})
it("should do what it used to do", () => {
spyObj.and.callThrough();
})
it("should do something a little differently", () => {
spyObj.and.returnValue('NewValue');
})
Der letzte it
Test zeigt, wie man das Verhalten eines vorhandenen Spions in etwas anderes als das ursprüngliche Verhalten and
ändern kann : " -declare" das neue Verhalten auf dem spyObj, das zuvor in der Variablen in der gespeichert warbeforeEach()
. Der erste Test veranschaulicht meinen Anwendungsfall dafür - ich wollte, dass sich ein Spion für die meisten Tests auf eine bestimmte Weise verhält, aber später für einige Tests ändert.
Für frühere Versionen von Jasmin, ändern Sie die entsprechenden Anrufe .andCallFake(
, .andCallThrough()
und .andReturnValue(
jeweils.