Sto iniziando un nuovo progetto e sto cercando molto duramente di usare TDD per guidare il design. Ho insistito per anni e alla fine ho ottenuto l'approvazione per dedicare il tempo extra a questo progetto per usarlo mentre imparo come farlo correttamente.
Questo è un nuovo modulo, da collegare a un sistema esistente. Attualmente, tutti gli accessi ai dati avvengono tramite servizi web, che per la maggior parte sono solo un sottile involucro sulle procedure memorizzate nel database.
Un requisito è che per un determinato negozio, restituisco tutti gli ordini di acquisto che sono considerati validi per questa applicazione. Un PO è considerato valido se la data di spedizione cade con un determinato intervallo dalla data di apertura dei negozi (questo è per i nuovi negozi).
Ora, non posso inserire questa logica nel codice dell'applicazione, poiché non ho intenzione di riportare un milione di PO solo per ottenere la dozzina che si applica a potrebbe applicarsi a questo negozio dato il vincolo di cui sopra.
Stavo pensando che potrei passare l'intervallo di date a un proc di GetValidPOs e utilizzarlo per restituire gli ordini di acquisto validi. Ma, cosa succede se aggiungiamo un altro requisito a ciò che è considerato un ordine di acquisto valido?
E come posso testarlo e verificare che funzioni? Non stiamo usando un ORM, ed è improbabile che accada. E non posso chiamare il DB nel mio test.
Sono bloccato.
Il mio altro pensiero, sono alcuni mock che restituiscono dati validi, altri che restituiscono dati non validi e fanno in modo che il repository locale generi un'eccezione se si verificano dati non validi e verificano che l'eccezione venga generata se i dati non validi vengono restituiti da GetValidPOs proc (o il mock utilizzato nei test).
Ha senso? O c'è un modo migliore?
UPDATE: Sono in grado di usare EF sembrerebbe. Ora ho solo bisogno di capire come usarlo e renderlo testabile, pur essendo ancora in grado di fare affidamento su stored procedure e la difficoltà di avere dati sparsi su diversi database.