Credo fermamente nel non ripetermi nel codice di produzione. Ho accettato l'idea che non dovresti ripeterti all'interno del codice di test. Ma cosa succede quando disponi di servizi di produzione che semplificano il codice di prova?
Lasciami fare un esempio. Abbiamo un servizio che accede all'API Doohickey. L'API di Doohickey è complessa, per necessità, e abbiamo un sacco di codice per semplificarlo per le nostre esigenze.
Ora ho bisogno di scrivere alcuni test automatici per il nostro servizio. I miei test devono impostare i dati nel servizio e sarebbe davvero utile riutilizzare quella facciata. Ma poi mi trovo in una discussione con me stesso, che è più o meno così:
"Se introduci un bug in Facciata, il test potrebbe non mostrarlo."
"Ma se si prende una copia, quando Dohickey Inc aggiorna la propria API, è necessario apportare la modifica in due punti."
"Vero, ma forse è una buona cosa. Possiamo aggiornare prima il codice di produzione, gestire i dati dei test usando l'API vecchia, nota e ancora supportata e testare accuratamente la nuova versione."
E poi penso che forse sto pensando troppo al problema. Qualcuno ha esperienza con questo tipo di problema? Se sì, da che parte sei andato e te ne sei pentito in seguito?
Modifica: i primi commenti suggeriscono che è richiesto un esempio più specifico.
Dire che ho un servizio che può creare un prodotto E creare un ordine. Ho il seguente test per scrivere ...
Given that product X exists
When customer Y orders product X
Then an order should exist for customer Y, including only product X
Per la parte "Quando" di questo, contatto il mio servizio, che utilizza una facciata attorno all'API Acquisti Dohickey per creare l'ordine.
I passaggi "Given" e "Then" dovrebbero creare un prodotto e ottenere un ordine, ma non dovrebbero passare attraverso il servizio per farlo. Forse il mio servizio non ha quella funzionalità, e se lo fa, lo controllerò altrove.
MA la facciata che vive all'interno del servizio renderebbe il codice di prova molto più semplice. Quindi dovrei fare riferimento al codice di produzione e usarlo o copiare / riscrivere la facciata?