ho una classe repository (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
}
Ho anche una classe di servizio (BLL):
public class MyService
{
private IMyRepository localRepository;
public MyService(IMyRepository instance)
{
this.localRepository = instance;
}
public void Delete(int itemId)
{
instance.Delete(itemId);
}
// other methods
}
Creazione di un test di unità per MyRepository avrebbe preso molto più tempo che implementarlo, perché dovrei prendere in giro il contesto di Entity Framework.
Tuttavia, la creazione di un test di unità per MyService sembra assurda, perché chiama solo nel repository. Tutto quello che potevo verificare è verificare se effettivamente ha chiamato il metodo Delete del repository.
Domanda
Come ti suggerisco di unit test questi paio di metodi di eliminazione. Entrambi? Uno? Nessuna? E cosa testeresti?
Ma se collaudo unitamente al metodo Service.Delete(), tutto quello che posso fare è verificare che chiami il metodo Repository.Delete(). Non riesco a controllare alcun dato, perché la manipolazione dei dati avviene nel repository. Altre (future) complessità non saranno incluse nel test. –
@Robert Questo non è del tutto corretto. Dovresti creare un oggetto IMyRepository fittizio. Dopo averlo fatto, puoi configurare il tuo simulato in modo che quando il livello di servizio chiama delete su di esso, puoi verificare che l'eliminazione sia chiamata correttamente sul simulatore. Pertanto, stai testando la funzionalità Service.Delete senza testare il Repository.Delete. – Joseph