2012-06-08 16 views
6

Así es como se supone que inyectar dependencias para su manejador NServiceBus para probarlo:La inyección de dependencia para NServiceBus pruebas unitarias manejador

Test.Handler<YourMessageHandler>() 
    .WithExternalDependencies(h => h.Dependency = yourObj) 

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

Sin embargo esto significa mi Dependencia referencia de objeto debe ser pública que no me gusta mucho ¿Hay alguna manera de mantenerlo como algo privado y asignarlo dentro del constructor, de modo que la implementación se suponga que se pase a través del constructor del manejador solamente?

Gracias

Respuesta

5

Puede utilizar la inyección de constructor utilizando la siguiente sintaxis:

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

Dónde DEP1 y DEP2 son con toda probabilidad sólo algunos esbozos o se burla de que su marco de burla cocinó para ti.

- Actualizado por Udi Dahan desde aquí:

Se puede acceder a la instancia de autobuses burlado a través Test.Bus.

+0

Intenté este enfoque, pero el problema es que la propiedad IBus de mi controlador es nula en este caso, necesito que se inicialice correctamente – YMC

+0

¿Quiere decir referenciar IBus en el controlador? ¿No es posible agregar un parámetro de constructor para eso? Debería poder simplemente hacer algo con el efecto de 'public YourMessageHandler (IDependence dep1, IOtherDependency dep2, IBus bus)' y simplemente asignarlo desde allí. Disculpas si me falta algo obvio, nunca tuve problemas para obtener las referencias que necesitaba con esto antes. – tmesser

+0

a la derecha, dentro del controlador Bus.Send <> (...) se usa, por lo que debo verificar su ejecución. El problema es que no tengo idea de cómo crear una instancia de la propiedad de tipo IBus, se supone que se hace mágicamente por NServiceBus, ni siquiera veo ninguna implementación pública de la interfaz, no hay clase de 'Bus' o algo así. Me refiero a que es algo que nos han ocultado los desarrolladores de la biblioteca NServiceBus – YMC

Cuestiones relacionadas