NServiceBus处理程序单元测试的依赖注入

YMC*_*YMC 6 c# unit-testing dependency-injection nservicebus

这是你应该如何为NServiceBus处理程序注入依赖项来测试它:

Test.Handler<YourMessageHandler>()
  .WithExternalDependencies(h => h.Dependency = yourObj)
Run Code Online (Sandbox Code Playgroud)

(http://nservicebus.com/UnitTesting.aspx)

但是这意味着我的Dependency对象引用应该公开,我不喜欢.有没有办法让它保持私有readonly并在构造函数中分配它,所以应该只通过处理程序构造函数传递实现?

谢谢

tme*_*ser 5

您可以使用以下语法来使用构造函数注入:

 Test.Handler<YourMessageHandler>(bus => new YourMessageHandler(dep1, dep2))
Run Code Online (Sandbox Code Playgroud)

dep1和dep2很可能只是你的模拟框架为你准备的一些存根或模拟.

- 由Udi Dahan从这里更新:

您可以通过Test.Bus访问模拟的总线实例.