In primo luogo, mi scuso per il titolo, non riuscivo a pensare al modo più semplice per spiegarlo!
Ho un metodo per cui voglio scrivere unit test. Lo terrò abbastanza generico in quanto non voglio discutere l'implementazione del metodo, ma solo il suo test. Il metodo è:
public void HandleItem(item a)
{
CreateNewItem();
UpdateStatusOnPreviousItem();
SetNextRunDate();
}
Quindi questa classe ha un metodo pubblico che quindi chiama alcuni metodi privati per eseguire la logica.
Quindi quando scrivo il test unitario voglio controllare che tutte e tre le cose siano state fatte. Dato che sono tutti chiamati nella stessa corsa, ho pensato che avrei potuto farlo come un test:
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
}
Ma ho pensato di poterlo scrivere anche come tre test separati:
public void GivenItem_WhenRun_ThenItemIsCreated()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenStatusIsUpdatedOnPreviousItem()
{
HandleItem(item);
}
public void GivenItem_WhenRun_ThenRunDateIsSet()
{
HandleItem(item);
}
Quindi per me questo sembra più bello in quanto essenzialmente elenca i requisiti, ma poi tutti e tre sono correlati e richiedono esattamente lo stesso lavoro eseguito sul metodo testato, quindi sto eseguendo lo stesso codice 3 volte.
C'è un approccio raccomandato da adottare con questo?
Grazie