Zurücksetzen "Angerufen" Zählen Sie auf Sinon Spy
Wie setze ich die "namens" count auf einen Spion Sinon vor jedem test?
Hier ist, was ich jetzt mache:
beforeEach(function() {
this.spied = sinon.spy(Obj.prototype, 'spiedMethod');
});
afterEach(function() {
Obj.prototype.spiedMethod.restore();
this.spied.reset();
});
Aber wenn ich den Anruf Zählung im test:
it('calls the method once', function() {
$.publish('event:trigger');
expect(this.spied).to.have.been.calledOnce;
});
...der test schlägt fehl und meldet, dass die Methode aufgerufen wurde X-mal (einmal für jeden bisherigen test, dass auch der Auslöser für die gleiche Veranstaltung).
InformationsquelleAutor der Frage cantera | 2013-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Frage wurde gebeten, eine Weile zurück, aber kann immer noch interessant sein, besonders für Menschen, die neu zu sinon.
this.spied.reset()
ist nicht notwendig, daObj.prototype.spiedMethod.restore();
entfernt die spy.Update 2018-03-22:
Wie schon in einigen Kommentaren unter meiner Antwort, stub.zurücksetzen wird zwei Dinge tun:
Entsprechend der docs dieses Verhalten wurde Hinzugefügt [email protected].
Die aktualisierte Antwort auf die Frage wäre, die Nutzung stub.resetHistory().
Beispiel aus den docs:
Update:
reset
. Dies hält der Spion.restore
.Beim arbeiten mit sinon können Sie die sinon Behauptungen für erweiterte Tests. Also statt zu schreiben
expect(this.spied).to.have.been.calledOnce;
könnte man schreiben:Diese würde auch funktionieren mit
this.spied
:Es gibt eine Menge von anderen sinon assertion-Methoden. Neben
calledOnce
es gibt auchcalledTwice
calledWith
neverCalledWith
und vieles mehr auf sinon Behauptungen.InformationsquelleAutor der Antwort TJ.