Ruft verschiedene callbacks für die stub auf firstcall und zweiten Anruf
Ich bin auf der Suche nach einem Weg in sinon zum aufrufen verschiedener Funktionen im ersten und zweiten Aufruf der stub-Methode.
Hier ist ein Beispiel:
var func1 = function(connectionPolicy, requestOptions, callback) {
callback({ code: 403 });
}
var func2 = function (connectionPolicy, requestOptions, callback) {
callback(undefined);
}
var stub = sinon.stub();
//Something of this form
stub.onCall(0) = func1;
stub.onCall(1) = func2;
request.createRequestObjectStub = stub;
So, dass, wenn Anfrage.createrequestObjectStub wird intern aufgerufen, (wenn Sie eine öffentliche API), sehe ich dieses Verhalten.
Grüße,
Rajesh
•Sinon version : 1.17.4
•Umwelt : Node JS
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige Möglichkeit, die ich gefunden, um zu tun, was Sie wollen (mit
onCall(index)
und eine anonyme stub) ist mitbind
JS-Funktion.Wäre dies:
Wenn Sie
stub.onCall(0).returns(func1());
die Funktionfunc1
wird ausgeführt, wenn die Definition, dass onCall, das ist, warum Sie benötigen, um die.bind
.Sowieso, haben Sie andere Optionen, wie die Rückgabe eines Wertes direkt mit
.onCall(index).returns(anObject);
oder definieren Sie einen Zähler, der jedes mal erhöht wird, Ihre gekürzte Methode aufgerufen wird (auf diese Weise Sie wissen, in welchem n-rufen Sie und Sie können unterschiedliche Werte zurückgeben).Für diese drei Ansätze, können Sie die folgenden Geige mit Beispielen: https://jsfiddle.net/elbecita/jhvvv1h1/
Können Sie
callsArg
undcallsArgWith
von sinon.stub (), um sinon Aufruf des callbacksDann können Sie etwas tun:
Dies ist ein Alter thread, aber atleast als von Sinon 1.8, ein effizienter Weg, um dieses Problem zu lösen wäre Verkettung
sinon.onCall(arg)
mitcallsFake()
.So, in Ihrem Anwendungsfall, können Sie das folgende tun: