これは私のコードです。私は "やっている"方法をテストし、this.obj.send
が時間間隔でカウントと呼ばれることを確認したい。Sinon usefaketimerとスパイがカウントミスと呼ばれる
私の問題は、私が_fetchAllDatas
というメソッドをスタブして解決したときです。 this.obj.send
を呼び出せませんでした。 this.obj.send
が_fetchAllDatas
の外に移動したとき。それは呼び出すことができます。
どうすればこの問題に対処できますか?ありがとう〜
var sinon = require('sinon');
class A {
constructor(obj){
this.obj = obj;
this.timer;
}
doing(){
this.timer = setInterval(()=>{
this._fetchAllDatas().then((data)=>{
console.log('!!!',data);
this.obj.send(data);
});
},1000)
}
stop(){
clearInterval(this.timer);
}
_fetchAllDatas(){
return Promise.resolve([]);
}
}
var sandbox = sinon.sandbox.create();
var spy = { send: sandbox.spy()};
var a = new A(spy);
var stub = sandbox.stub(a,'_fetchAllDatas').resolves(['mark']);
var clock = sandbox.useFakeTimers();
a.doing();;
clock.tick(5000);
sinon.assert.callCount(spy.send, 5); // error the count is zero. it should be 5 times