tengo una clase repositorio (DAL):
public class MyRepository : IMyRepository
{
public void Delete(int itemId)
{
// creates a concrete EF context class
// deletes the object by calling context.DeleteObject()
}
// other methods
}
También tengo una clase de servicio (BLL):
public class MyService
{
private IMyRepository localRepository;
public MyService(IMyRepository instance)
{
this.localRepository = instance;
}
public void Delete(int itemId)
{
instance.Delete(itemId);
}
// other methods
}
Creación de una unidad de prueba para MyRepository tomaría mucho más tiempo que implementarlo, porque tendría que burlarme del contexto de Entity Framework.
Pero la creación de una prueba unitaria para MyService parece una tontería, ya que solo llama al Repositorio. Todo lo que pude verificar es verificar si realmente llamó al método de repositorio Delete.
Pregunta
¿Cómo sugieren a prueba de unidad este par de métodos de eliminación. ¿Ambos? ¿Uno? ¿Ninguna? ¿Y qué probarías?
Pero si pruebo el método Service.Delete() de la unidad, todo lo que puedo hacer es verificar que llame al método Repository.Delete(). No puedo verificar ningún dato, porque la manipulación de datos se realiza en el repositorio. Otras complejidades (futuras) no se incluirán en la prueba. –
@Robert Eso no es del todo correcto. Debería crear un objeto simulado IMyRepository. Una vez que haya hecho eso, puede configurar su simulacro para que cuando la capa de servicio invoque eliminar en él, pueda verificar que la eliminación se invoque correctamente en el simulacro. Por lo tanto, está probando la funcionalidad Service.Delete sin probar también el Repository.Delete. – Joseph