Überprüfen-Funktion aufrufen und prüfen von Argumenten mit sinon Spione
Ich würde gerne überprüfen, ob bar()
ist aufgerufen, in foo()
von meinem unit-test.
Ich dachte mir, dass Sinon Spione geeignet sein könnte, aber ich weiß nicht, wie Sie zu verwenden sind.
Gibt es eine Möglichkeit zu prüfen, dass die Methode aufgerufen wird? Vielleicht auch das extrahieren der Argumente, mit denen in der bar()
nennen?
var spy = sinon.spy(foo);
function foo(){
bar(1,2,3);
}
function bar(){ }
foo();
//what to do with the spy?
InformationsquelleAutor filur | 2015-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem Fall, Sie versuchen, um zu sehen, wenn
bar
genannt wurde, so dass Sie wollen, um zu spionierenbar
eher alsfoo
.Wie beschrieben in der doc :
Nun, Spionage auf die Interna der Funktion dringend Paare, die Ihren test von "foo" auf seine Umsetzung, so dass Sie fallen in den üblichen "mockist vs klassische" Debatte.
getCall(0)
stattgetCalls(0)
Und schließlich können Sie geltend machen, der Aufruf Argumente einfach so:
expect(window.bar.getCall(0).args).deep.equal([1, 2]);
InformationsquelleAutor phtrivier
Ich Stimme mit Adrian zu sagen, dass Sie wohl wollte, Spion auf bar statt.
Dann zu überprüfen, dass es hieß einmal
Nur genannt um alle
Genannten Betrag x mal
Wenn Sie möchten, extrahieren Sie die Argumente aus dem ersten Aufruf der Spion:
Dann können Sie tun, was Sie wollen mit diesen Argumenten.
spy()
diese Weise - es nimmt ein Objekt und einen Methodennamen als Parameter 1 und 2 (dies war auch der Fall für ältere Versionen wieder in 2015). Wenn der Aufruf mit nur einer Funktion, die es erstellt eine anonyme spy-Funktion, benannt nach dem Durchlaufen und gibt es zurück, die die übergebene Referenz nicht verändert wird.Ist es ok für Sie zu posten die technisch richtige Antwort?
InformationsquelleAutor user1699348
Sollten Sie nicht nachspionieren bar, anstatt foo?
Aufruf von foo:
Check bar genannt wurde:
spy()
diese Weise - es nimmt ein Objekt und einen Methodennamen als Parameter 1 und 2 (dies war auch der Fall für ältere Versionen wieder in 2015). Wenn der Aufruf mit nur einer Funktion, die es erstellt eine anonyme spy-Funktion, benannt nach dem Durchlaufen und gibt es zurück, die die übergebene Referenz nicht verändert wird.InformationsquelleAutor Adrian Lynch