Bei der Verwendung von Sinon, so ersetzen Sie die stub-Funktion in eine stub-Instanz?
Wenn ich erstellen Sie eine Instanz von var a = sinon.createStubInstance(MyContructor)
.
Wie kann ich das ersetzen einer der gekürzte Funktion wie var stub = sinon.stub(object, "method", func);
.
Der Hauptgrund, warum ich das Tue ist erreichen wollen mehrere callback-workaround als dies erwähnt
InformationsquelleAutor StevenR | 2015-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass dies nicht viel Sinn machen, denn wenn Sie ersetzen ein stub mit einem anderen stub... dann warum verwenden Sie nicht nur die erste stub zu erreichen, was Sie wollen mit der zweiten stub.
Sowieso, die
sinon.stub(object, "method", func)
hat die folgenden laut der docs:Also, wenn Sie ersetzen möchten eine stub-Funktion einen stub-Instanz, dann warum nicht Sie tun:
Oder wenn Sie möchten, erstellen Sie einen stub in der Stelle von einem Spion:
Bis-gestimmt als diese Antwort hat mich auf die richtige Spur. Obwohl seit dieser beantwortet wurde
sinon.stub(object, "method", fn)
ist veraltet. Wir können jetztsinon.stub(object, "method").callsFake(function() { // do stuff });
Finden Sie unter hier Edit: fixed urlDu hast Recht, aber die Frage selbst ist gefragt für
sinon.stub(object, "method", fn)
, so denke ich, dass ich nicht darunter, dass Informationen in die Antwort von selbst.InformationsquelleAutor g00glen00b
Nach stubbing ein ganzes Objekt mit
sinon.createStubInstance(MyConstructor)
odersinon.stub(obj)
Sie können nur ersetzen Sie die stub-entweder durch die Zuweisung einer neuen stub auf die Eigenschaft (wie beschrieben von @g00glen00b) oder die Wiederherstellung der stub vor dem re-Stubs.Dies hat den Vorteil, dass Sie immer noch rufen
a.method.restore()
danach mit dem erwarteten Verhalten.Wäre es bequemer, wenn die Stub-API hatte einen
.call(func)
Methode zu überschreiben die Funktion aufgerufen wird, die von der stub nach der Tat.InformationsquelleAutor flungo
Gibt es keine Notwendigkeit zum überschreiben der
a.method
, sondern wir könnencallsFake
auf diea.method
direkt:InformationsquelleAutor Jan Molak