大規模なアプリケーションになるもので、Akka と RabbitMQ を使用しています。
現在、受け入れテストと統合テストのために、テスト中のモジュールから通常はメッセージを送受信するアクターのモックを作成しています。事実上、まったく同じ RabbitMQ キューを使用し、データを注入または受信してから検証するだけです。
すべてがrabbitMQ全体で動作していることを保証するのに適切だと思いますか?
別の側面として、他のことをテストするためにロギング キューを使い始めました。あらゆる種類のログ メッセージをそこにルーティングし、キューを読んで何が起こっているかを把握するだけです。たとえば、何かが何かを行っているかどうかをテストしたい場合は、関数LogThis("Entered: Method Name")
を貼り付けてから、メッセージを入れるキューを読み取って、それが発生したかどうかを確認します。
それは良い考えのように聞こえますか?単体テストでもそれをやっているという考えです。他のすべてはモックアウトされていますが、その方法を使用して、テストが難しい特定の領域の正しい動作を検証しています. ログデータのストリームを読み取って、それが私が望むことをしているかどうかを確認するだけです。
デバッグ レベルのログ ファイル キューをリッスンして同じ情報を取得できれば、Akka テスト キットであらゆる種類のトラブルに遭遇するよりもはるかに簡単に思えたので、このアイデアを思いつきました (ログが正確に記録されていることを保証する限り)。 )