450

テスト ケースでネットワーク リクエストを送信していますが、2 秒以上かかることがあります (デフォルトのタイムアウト)。

1 つのテスト ケースのタイムアウトを増やすにはどうすればよいですか?

4

8 に答える 8

146

es6 アロー関数を使用する場合は、定義.timeout(ms)の最後に a を追加できます。it

it('should not timeout', (done) => {
    doLongThing().then(() => {
        done();
    });
}).timeout(5000);

少なくともこれは Typescript で機能します。

于 2016-03-28T06:28:12.447 に答える
75

(今日これに遭遇したので)

ES2015 の太い矢印の構文を使用する場合は注意してください。

これは失敗します:

it('accesses the network', done => {

  this.timeout(500); // will not work

  // *this* binding refers to parent function scope in fat arrow functions!
  // i.e. the *this* object of the describe function

  done();
});

編集:失敗する理由:

コメントで @atoth が言及しているように、太い矢印関数には独自のthisバインディングがありません。したがって、it関数がコールバックのthisにバインドしてタイムアウト関数を提供することはできません。

結論: タイムアウトの増加が必要な関数にはアロー関数を使用しないでください。

于 2016-02-14T22:32:25.067 に答える
24

コマンドラインから:

mocha -t 100000 test.js
于 2016-02-03T14:16:36.383 に答える
17

また、別のアプローチを取り、ネットワーク リソースへの呼び出しをスタブまたはモック オブジェクトに置き換えることを検討することもできます。Sinonを使用すると、アプリケーションをネットワーク サービスから分離して、開発作業に集中できます。

于 2013-11-14T13:39:22.177 に答える