he diseñado una aplicación que utiliza el patrón de repositorio, y luego una capa de servicio independiente como este:TDD - ¿Quieres probar mi capa de servicio con un repositorio falso, pero cómo?
public class RegistrationService: IRegistrationService
{
public void Register(User user)
{
IRepository<User> userRepository = new UserRepository();
// add user, etc
}
}
Como se puede ver, estoy crear instancias de mi repositorio en el interior del método de Registro. Ahora que quiero escribir algunas pruebas unitarias, realmente no puedo acceder y reemplazarlo con un repositorio falso, ¿o sí?
Aunque no quiero agregar el repositorio como variable de clase (y configurarlo a través de un constructor) porque creo que eso haría que mi código "oliese mal" (no todos los repositorios son necesarios para todos los métodos, y no lo hago Necesito la capa de llamada para conocer repositorios, etc.
Sugerencias?
Estás en el camino correcto, pero pasar en una dependencia a través del constructor no hace que tu código huele mal. Es un principal de diseño aceptado (Inversión de control). – ebrown
Esta es una muy buena charla sobre Pruebas unitarias con DI: http://www.youtube.com/watch?v=wEhu57pih5w –