2016-11-03 23 views
-1

私は値が一定の間隔で放出されるように私のライブラリのための仕様を作成しました。私はsinonjsを使用しており、スパイとしてコールバックを作成しています。私は10秒間の余分な2つの間隔をシミュレートするsinonjsで偽のタイマーを使用しています。しかし、テストがtickメソッドの最初の使用に着いたとき、これはエラーが発生したときです。私は、これは私の生産コードである私のテスト予想エラーが発生するのはなぜですか?

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

については、以下の

ExpectationError: Unexpected call: getTheValue() 
Expectation met: getTheValue([...]) once 

がコードで以下のエラーが発生し

_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

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

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

関連する問題