Prima di iniziare, questa domanda non è la stessa di questa .
Venendo da uno sfondo PHP
, la mia esperienza è in CakePHP
, che è un framework che supporta Unit Testing impostando un database di test locale , gestito per classi speciali chiamate fixtures
(dati CRUD sul test db prima di ogni suite di test tramite codice).
Tuttavia, essendo nuovo in .NET
framework, le esercitazioni intermedie suggeriscono l'uso del modello Unità di lavoro , per utilizzare un repository reale o un repository finto tramite interface
.
Quando si tratta di test delle unità , non c'è molta differenza tra questi 2 modi di gestire l'operazione dei dati, ma il problema che ho riscontrato è stato quando si caricavano dati relazionali, poiché il repository reale utilizza il framework ORM
mentre il repository simulato utilizza qualcosa di simile a un'implementazione dell'interfaccia List
per conservare i dati in memoria e non è in grado di caricare in modo appassionato né caricare dati relazionali pigri.
Fino a questo punto vedo 2 possibili ragioni per le quali sono intervenuto su questo problema:
- Il repository fittizio dovrebbe essere codificato in modo da poter ottenere in qualche modo dati relazionali.
- Non dovrei verificare se il modello ha acquisito dati correlati, ma testare solo se il
controller
è stato in grado di acquisire il modello principale dal repository.
Mi piacerebbe sapere quale dei 2 sopra sarebbe (o se forse c'è un terzo ...) e i vantaggi / svantaggi del repository finto vs test db.