2

シリアル ポート通信を使用するノード モジュールを作成しています。すべての送信メッセージは write() で呼び出され、すべての受信メッセージに対してすべてのイベントが発生します。

受信メッセージをテストできるようにしたいと思います。書き込みが呼び出されると、受信メッセージに非常に短い時間 (良好な状態では 1/10 秒未満) かかります。

スニペット:

it("can receive", function() {
    btReader.on('dataReceived', function(data){
        console.log(data);
        expect(data).toBeDefined();
    });
});

この方法では、イベント ハンドラーのみが作成されますが、イベントが発生する前に完全なテストが実行されます。その後、イベントが発生するとコードが実行されますが、実際にはテストされません。

waitsFor メソッドを使用してから、イベント ハンドラ内で bool を true に設定する必要がありますか?

4

1 に答える 1

2

waitsForイベントは非同期であるため、メソッドを使用してハンドラーが呼び出されたことをテストする必要があります。テストする変数を作成する必要があることは間違いありません。したがって、最終的には、テストの 3 つの部分になります。

  1. 初期設定とイベント呼び出し (つまりwrite、false に設定された変数)。
  2. waitsFor変数が true に設定されるメソッド。
  3. 変数が true に設定されていることを確認する最終的な期待値テスト。

このwaitsForメソッドはタイムアウト パラメータを想定しているため、関数の実行に 200 ミリ秒かかる場合は、タイムアウトに適切な値を指定して、関数が予期せず失敗しないようにします。もちろん、上記のような単純なテストを行う必要はありません。変数を write メソッドが行うものに設定し、それが本来の動作を行っていることを確認することができます。

于 2013-03-19T09:05:44.733 に答える