Suponga que tiene un método:prueba Unidad de métodos muy triviales (sí o no)
public void Save(Entity data)
{
this.repositoryIocInstance.EntitySave(data);
}
escribirías una prueba de unidad en absoluto?
public void TestSave()
{
// arrange
Mock<EntityRepository> repo = new Mock<EntityRepository>();
repo.Setup(m => m.EntitySave(It.IsAny<Entity>());
// act
MyClass c = new MyClass(repo.Object);
c.Save(new Entity());
// assert
repo.Verify(m => EntitySave(It.IsAny<Entity>()), Times.Once());
}
porque más adelante si lo hace la implementación del método de cambio para hacer más "complejo" cosas como:
public void Save(Entity data)
{
if (this.repositoryIocInstance.Exists(data))
{
this.repositoryIocInstance.Update(data);
}
else
{
this.repositoryIocInstance.Create(data);
}
}
... su unidad de prueba fracasaría pero probablemente no romper su aplicación ...
pregunta
¿Debo siquiera se molestan creación de pruebas unitarias en los métodos que no tiene ningún tipo de devolución * o ** no cambia nada fuera de la simulación interna?
Su respuesta es, hasta ahora, la más cercana a lo que quería saber. Pero la segunda viñeta sería en este caso el repositorio de pruebas y no el método en sí, ¿no es así? –
No lo creo. Este podría ser un objeto que contiene una lista (o tal vez un conjunto, depende de lo que desee) y el "EntitySave" simplemente agregaría la entidad (si existe? No sé cómo se supone que debe funcionar). No unirse a varias tablas u otras cosas complicadas que su repositorio podría hacer. –
Su implementación de objetos sería más costosa, como se mencionó, pero en mi humilde opinión es la mejor manera de ver si la llamada se realizó de manera consistente. –