2016-11-03 131 views
-1

我已经为我的库创建了一个规范,以确保定期发送一个值。我正在使用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

向我们展示产品代码。 – luboskrnac

+0

我已经添加了生产代码。 –

+0

我仍然认为我们完全看不到您的代码。例如。在哪里定义'getTheValue'?伪造的地方在哪里?有很多使用'this'。向我们显示附上的代码,以便我们可以找出您的外部范围。用于测试和生产代码。 – luboskrnac

回答

0

如果您希望回拨被称为不同时间,请使用calledWithcalledWithExactly,并为预期的每个呼叫提供各种参数。

sinon-chai只是在Sinon之上的API包装。所以你可以阅读更多关于这些期望in Sinon docs

相关问题