为什么我收到期望错误?
问题描述:
我已经为我的库创建了一个规范,以确保定期发送一个值。我正在使用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);
}
没有人有任何想法,为什么我可能会得到这个错误?
答
如果您希望回拨被称为不同时间,请使用calledWith
或calledWithExactly
,并为预期的每个呼叫提供各种参数。
sinon-chai只是在Sinon之上的API包装。所以你可以阅读更多关于这些期望in Sinon docs。
向我们展示产品代码。 – luboskrnac
我已经添加了生产代码。 –
我仍然认为我们完全看不到您的代码。例如。在哪里定义'getTheValue'?伪造的地方在哪里?有很多使用'this'。向我们显示附上的代码,以便我们可以找出您的外部范围。用于测试和生产代码。 – luboskrnac