0
이 예제에서 barStub.called === false는 아마도 fooStub의 실행 흐름이 barStub가 해결되기를 기다리지 않기 때문일 수 있습니다.반환되지 않는/병렬 비동기 함수에 대해 스텁/스파이를 만드는 방법은 무엇입니까?
또한 assert(barStub.called)
을 10 초 setTimeout에 넣었지만 여전히 호출되지 않았습니다.
바처럼 스텁하는 방법이 있습니까? 여기
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'이므로, 모든 것이 올바르게/구문 적으로 설정되고 있다고 생각합니다. –