In diesem Beispiel ist barStub.called === false, vermutlich weil der Ausführungsfluss von fooStub nicht auf die Auflösung von barStub wartet.Wie erstellen Sie einen Stub/Spion für eine nicht zurückgegebene/parallele asynchrone Funktion?
Ich legte auch assert(barStub.called)
in einem 10-sekündigen setTimeout, und es war noch nicht aufgerufen.
Gibt es eine Möglichkeit, eine Methode wie bar zu stümpfen?
const sinon = require('sinon')
const assert = require('assert')
const functionHolder2 = {
bar: function() {
return Promise.resolve('bar')
}
}
const functionHolder = {
foo: function() {
functionHolder2.bar()
return Promise.resolve('foo')
}
}
const fooStub = sinon.stub(functionHolder, 'foo').returns(Promise.resolve({}))
const barStub = sinon.stub(functionHolder2, 'bar').returns(Promise.resolve({}))
functionHolder.foo()
assert(fooStub.called) // this passes
assert(barStub.called) // this fails
Vielen Dank! Dieses Beispiel funktioniert definitiv. Es muss ein paar irrelevante Probleme in meinem eigentlichen Code geben, denn trotz "functionHolder.foo" und stubbing "functionHolder2.bar" bleibt "callCount" auf "barStub" gleich "0". Wenn ich 'functionHolder2.bar' direkt aus dem Test heraus anrufe, ist' callCount' '1', also glaube ich, dass alles korrekt/syntaktisch aufgebaut ist. –