2016-10-17 11 views
0

mochaとchaiで単体テストを書く際に手を使っていますが、実際のエラーではなくタイムアウトエラーが発生する問題に遭遇しています。回避策があるようです。私のコードでMocha非同期テストタイムアウトの回避策

1) Unit Tests for Networks Array 
should check that networks array is not empty: 
    Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. 

を、私は私がテストしてるものの逆が真であること、それを作ったので、私は、予想される故障を持っている:私は取得しています

エラー。

この種の問題を解決する標準的な方法はありますか?

describe('Unit Tests for Networks Array\n', function() { 

    it('should check that networks array is not empty', function (done) { 
     git.getNetworks(function (networks) { 
      expect(networks).to.be.empty(); // expected failure 
      done(); 
     }); 
    }); 
+0

を送る理由です。 ** git.getNetworks **が約束しているかどうかは無視されますが、その場合はユースケースが欠落しています。コールバックが決して解決されない場合はどうなりますか?もっと情報を提供できますか? –

+0

はい、git.getNetworksは約束です。そして、それが解決しないときには時間切れになります。代わりにエラーをスローしたいと思います。 – Jason

答えて

0

約束はこのように機能し、拒否または解決できます。しかし、あなたの約束のロジック内にエラーがあり、それがを飲み込んでを飲み込んでしまったので、エラーをキャッチしないと、それは表示されません。

git.getNetworks.then(function() { 
/* do something with the result */ 
}).catch(function() { 
/* error :(*/ 
}) 

、あなたが拒否コールバック(オプション)とキャッチ(常に)をカバーしているを確認してくださいそれ以外の場合はプロミスsilentyはスローし、エラーとモカはコードが動作する必要があることをタイムアウト

+0

私はこれを ' のように実行しました( 'ネットワーク配列が空でないことを確認する必要があります'、function(done){ git.getNetworks(function(networks){}){ expect(networks)。 (){ } )); }); '。();done() })。しかし、私は(中間値)を得ました。それは関数ではありません。 – Jason

+0

次にgitNetworksは約束ではありません –

関連する問題