私は関数の実行を抑制するために書いたライブラリをテストしています。約束が果たされないことをどうやってテストできますか?
APIはthrottler.do(fn)であり、fnの戻り値の約束を返します(スローラが実行しても問題ないと判断した時点で解決されます)。
私は毎分2つのアクションを許可し、
throttler.do(() => {});
throttler.do(() => {});
throttler.do(() => {}).should.eventually.equal(5);
を行うにはスロットラーを設定する場合に予想されるとして、それが最後の約束を待っているので、そう、これは(それがタイムアウト失敗偽物Date()
とsetTimeout
にlolexを使用しています永遠に私はlolex.tick
と呼ぶことはありません)。
ですそこsetTimeoutメソッドをlolexによって偽造されたので、私は
setTimeout(() => done(), 1500)
を行うことができない私は通過テストにこれを回すことができる方法、
throttler.do(() => {}).should.never.be.fulfilled;
のようなもの。
少し詳しく説明できますか?私は図書館の背後にあるアイデアを得るが、それをどのように適用するかはわからない。私の場合、約束は被験者によって返されます。テスト対象のものが返すものを私が馬鹿にすれば、本当にテストすることはできません。 – JonathanR
彼はどのようにプロミスを作りますか? Promise工場を模擬することができます。Qを使って約束を延期すると、 –
が得られます。これは私のアプローチよりはるかに優れています。ありがとうございます。 – JonathanR