0
この例では、barStub.called === falseです。おそらく、fooStubの実行フローはbarStubが解決するのを待たないからです。非リターン/パラレル非同期関数のスタブ/スパイを作成するにはどうすればよいですか?
また、assert(barStub.called)
を10秒setTimeoutに入れましたが、それでも未呼び出しでした。
barのようなメソッドをスタブする方法はありますか?
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
ありがとうございました!この例は間違いなく機能します。実際のコードでは、 'functionHolder.foo'と' functionHolder2.bar'を盗んでいるにもかかわらず、 'barStub'の' callCount'は '0'のままなので、余計な問題が発生するはずです。テストから 'functionHolder2.bar'を直接呼び出すと' callCount'は '1'なので、すべてが正しく/構文的に設定されていると思います。 –