ソリューションで高レベルのテストを作成しようとしていますが、バスに送信されたメッセージを「キャッチ」したいと考えています。
これが私がすることです:
- nUnit [SetUp] は、IISExpress で WebAPI プロジェクトをスピンアップします
- SetUp はバスも作成します。
- HTTP リクエストを API に送信する
- 確認したいことは何でも確認する
テスト全体の WebAPI 部分は正常に動作します。バスの作成とキックオフも素晴らしいようです。偽のメッセージ ハンドラも検出されます。問題は、ハンドラーがキューからコマンドを受信せず、RabbitMQ キューに永久に留まることです。
バスの構成方法は次のとおりです。
var bus = Configure.With()
.DefineEndpointName("Local")
.Log4Net()
.UseTransport<global::NServiceBus.RabbitMQ>()
.UseInMemoryTimeoutPersister()
.RijndaelEncryptionService()
.UnicastBus();
.CreateBus();
NServiceBus の起動時のログを見ると、偽のハンドラーがコマンドに関連付けられていることがわかります。
2014-09-24 15:29:59,007 [Runner thread] DEBUG NServiceBus.Unicast.MessageHandlerRegistry
[(null)] <(null)> - Associated 'Bloo.MyCommand' message with 'Blah.FakeMyCommandHandler' handler
したがって、メッセージが正しい RabbitMQ キューに到達するのを見て、ハンドラー ポイントが正常に機能するまではすべてが正常であると想定しています。
[TearDown] に待機を入れてみたので、バスがもう少し長生きします - ハンドラーがメッセージを受信する時間を与えることを望んでいます。また、interactoin の消費者部分のメモリ内バスを新しいスレッドにスピンオフしようとしましたが、うまくいきませんでした。
他の誰かがこれを試しましたか?
これは最初のステップにすぎません。私がやりたいことは、送信されるメッセージを記録する偽のバスを作成することです。RabbitMQ の必要性は、自分自身を動かすことだけです (私のソリューションの境界は、前面の WebAPI と背面のバスです)。
乾杯