Sto facendo i primi passi con MsTest e Moq e vorrei testare una classe di repository Linq2SQL. Il problema è che non voglio che i test di unità modifichino in modo permanente il mio database di sviluppo.Unità testata su un repository LINQ2SQL
Quale sarebbe l'approccio migliore per questo scenario?
- Lasciate ogni test operare sul mio database di sviluppo vero e proprio, ma assicurarsi che ogni test pulisce dopo essersi
- creare un duplicato del mio database di sviluppo e dbml per la prova di unità e utilizzare quel contesto, invece, così posso cancellare l'intero database prima di ogni test eseguito
- Trova un modo elaborato per deridere il Datacontext (tieni presente che sono un Moq noob totale).
- Qualcosa di completamente diverso? Forse qualcosa che automatizzerebbe la configurazione del database per me prima di ogni prova?
Edit: Ho appena saputo che MBUnit ha un attributo di rollback che inverte eventuali operazioni di database gestiti da un banco di prova. Non sono particolarmente legato a MSTest, quindi questa potrebbe essere una risposta facile al mio problema?
Sì, è quello che ho fatto anche io. Questo, e ha creato test di integrazione che hanno funzionato contro un database. Linq to Sql è piuttosto buono sotto questo aspetto: puoi nuke e creare il database direttamente dal contesto dei dati. – Will