-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);
}

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

4

1 回答 1

0

如果您希望回调被多次调用,请使用calledWithorcalledWithExactly并为预期的每个调用提供各种参数。

sinon-chai只是 Sinon 之上的 API 包装器。因此,您可以在 Sinon 文档中阅读更多关于这些期望的信息。

于 2016-11-05T08:31:25.347 回答