-1

ライブラリの仕様を作成して、値が定期的に発行されるようにしました。私は sinonjs を使用しており、スパイとしてコールバックを作成しました。私は sinonjs で偽のタイマーを使用して、10 秒の余分な 2 つの間隔をシミュレートしています。ただし、テストが 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

コールバックが何度も呼び出されることが予想される場合は、calledWithまたはcalledWithExactlyを使用して、予想される呼び出しごとにさまざまなパラメーターを指定します。

sinon-chaiは、Sinon 上の API ラッパーです。したがって、Sinon docs でこれらの期待について詳しく読むことができます。

于 2016-11-05T08:31:25.347 に答える