Primero, disculpas por el título, ¡no podría pensar en la forma más fácil de explicarlo!
Tengo un método para el que quiero escribir pruebas unitarias. Lo mantendré bastante genérico, ya que no quiero discutir la implementación del método, solo probarlo. El metodo es:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
Entonces, esta clase tiene un método público que luego llama a algunos métodos privados para realizar la lógica.
Entonces, al escribir la prueba de la unidad, quiero verificar que se hayan hecho las tres cosas. Como todos se llaman en la misma ejecución, pensé que podría hacerlo como una prueba:
public void GivenItem_WhenRun_Thenxxxxx
{
HandleItem(item);
// Assert item has been created
// Assert status has been set on the previous item
// Assert run date has been set
}
Pero pensé que también podría escribirlo como tres pruebas separadas:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
Entonces, para mí, esto parece más agradable, ya que esencialmente enumera los requisitos, pero los tres están relacionados y requieren exactamente el mismo trabajo realizado en el método probado, por lo que estoy ejecutando el mismo código 3 veces.
¿Hay un enfoque recomendado para tomar con esto?
Gracias