为什么我收到期望错误?

时间:2016-11-03 21:51:13

标签: javascript unit-testing mocha sinon sinon-chai

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

有谁知道为什么我会收到此错误?

1 个答案:

答案 0 :(得分:0)

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

sinon-chai只是Sinon之上的API包装器。因此,您可以详细了解这些期望in Sinon docs