我为我的库创建了一个规范,以确保定期发出一个值。我正在使用sinonjs,并创建了一个回调作为间谍。我在sinonjs中使用假计时器来模拟超过10秒的额外两个间隔。但是,当测试在第一次使用tick方法时,这就是发出错误的时候。我产生以下错误
ExpectationError: Unexpected call: getTheValue()
Expectation met: getTheValue([...]) once
以下是我的测试代码
it('should emit the values at an interval', function () {
var callback = this.sandbox.spy();
var interval = this.sandbox.useFakeTimers();
this.myLib.emitValues(callback);
interval.tick(1000);
interval.tick(1000);
callback.should.have.been.calledWith('test');
});
这是我的生产代码
_getValue() {
var value = getTheValue(this.id);
this.myListener(value);
}
emitValues(callback) {
this.myListener = callback;
this._getValue();
setInterval(() => this._getValue(), 1000);
}
有谁知道为什么我会收到此错误?
答案 0 :(得分:0)
如果您希望不同时间调用回调,请使用calledWith
或calledWithExactly
并为每个预期的呼叫提供各种参数。
sinon-chai只是Sinon之上的API包装器。因此,您可以详细了解这些期望in Sinon docs。