Dependency injection for NServiceBus handler unit testing

c#, dependency-injection, nservicebus, unit-testing

Solution

You can use constructor injection by using the following syntax:

 Test.Handler<YourMessageHandler>(bus => new YourMessageHandler(dep1, dep2))

Where dep1 and dep2 are in all likelihood just some stubs or mocks that your mocking framework cooked up for you.

-- Updated by Udi Dahan from here:

You can access the mocked bus instance via Test.Bus.

Problem

This is how you supposed to inject dependencies for your NServiceBus handler to test it: ``` Test.Handler<YourMessageHandler>() .WithExternalDependencies(h => h.Dependency = yourObj) ``` (http://nservicebus.com/UnitTesting.aspx) However it means my Dependency object reference should be public that I do not like a much. Is any way to keep it private readonly and assign it inside constructor, so that implementation supposed to be passed through the handler constructor only? Thanks

Original source