UDP を使用してクライアントとサーバー間でメッセージを送信する node.js クライアント/サーバー アプリケーションの一連のテストを mocha で作成しました。
私のテストは主に「クライアント側」で行われ、サーバーをブロック ボックスとして扱い、サーバーからの応答を検証します。問題は、「会話」の一部が複数のメッセージ送受信イベントにまたがり、場合によっては数十秒に及ぶことです。1,000 行のテスト スクリプトの先頭に巨大な呼び出しが 1 つしかないのは奇妙に思えit
ます。「会話」中に複数のテストを実行したいのです。テストが失敗した場合にテストの特定の部分が失敗する (たとえば、サーバーからの最初の 2 つの応答は問題なく、3 番目の応答は形式が正しくない) という粒度が必要ですが、最初のテストはパスします。
への呼び出しをネストしit
(うまくいかないようです)、最近では への呼び出しをit
別々のステップに分けて調べました。各ステップは、クライアント側での 1 つのメッセージの送信または受信を表します。
モカは最初のステップの後にノードアプリケーションを終了し、ソケットがサーバーからさらに応答を受信して残りのステップを完了するのを決して待たないため、このアプローチは機能していないようです。
モカで「イベント化された」it
呼び出しを作成するにはどうすればよいですか?
最初の呼び出しはテストの開始時に呼び出され、その後の各it
呼び出しはサーバーからの応答を受信した後にのみ呼び出されます。it
クライアントとサーバー間の数十のメッセージを含む呼び出しに膨大な関数を記述する必要なく、テストの粒度を提供するソリューションを探しています。また、多くのメッセージが事前に送受信されている会話のコンテキスト外で、サーバーからの応答を検証しようとすることも適切ではありません。これらのメッセージがサーバー応答の有効性を決定するからです。
https://gist.github.com/4490219で作成したサンプル実装を参照してください。結果を見ると、最初のテストはパスしますが、ソケットがまだ開いていてサーバーからの要求を待っているにもかかわらず、2 番目のテストは実行されません。
(要点のテキスト形式についてのPS謝罪-作成時にJavascriptを言語タイプとして選択できなかったようです)
(PPS各ステップの開始時に一連のsetTimeout呼び出しを使用して、mochaに待機する必要があると思わせる必要は本当にありません)。