2016-08-02 3 views
0

私はいくつかの非同期プロセスに対して短いmocha/chaiノードテストを書こうとしていますが、は無視して、無関係の入力を無視します。基本的には、このようになります(関連する入力のテストと比較して)。問題は、どのようにして2番目のテストを書くのですか?それは最終的に何もしない非同期プロセスですが、エラー/成功は発しない...モカ/チャイ:どうして起こらなかったことの非同期テストを実行するのですか?

it('should process input', function(done) { 
    object 
    .on('success', function(result) { 
     expect.result.to.equal("OK"); 
     done(); 
    }) 
    .asyncDoSomething('relevant input'); 
}); 

it('should ignore input', function(done) { 
    object.asyncDoSomething('irrelevant input'); 
    // TODO: how do I verify the async process eventually did nothing? 
}); 

答えて

0

良いものだこと - それは実現しなかった場合に頭に浮かぶ唯一の解決策は、タイムアウトを待つと仮定することですこの時、それは起こりません。しかし、これは良い設計ではなく、不必要にテストスイートの速度を落とします。

意思決定ロジックを同期してテストできる場所に分離し、それをテストすることを考えましたか?

+0

私は2つのイベントがあるため、「成功」と「エラー」があります。問題はまた、これは非同期プロセスなので、これを正確にテストする方法がわかりません。 –

0

私はエミッタを更新して、非同期的に入力を無視することを決定したすべてのケースに対して何らかの「無視された」イベントを放出するようにエミッタを更新しました。テストのために、私は無視の「原因」をチェックします:

expect(cause).to.equal(expectedCause)