Questo è qualcosa con cui spesso faccio fatica a testare, ma non riesco mai a trovare una risposta canonica o ragionevole a
.Scenario semplice
Una funzione, f()
, prende un file, lo elabora e restituisce il file elaborato. f()
ha test unitari per verificare che si comporti come previsto.
Un'interfaccia della riga di comando (CLI) accetta un percorso file come input e utilizza f()
per elaborare il file corrispondente.
Come dovrei testare la CLI? Passandogli un percorso e assicurandoti che gestisca quel percorso, indipendentemente dal fatto che il file esista o meno, è logico, ma passando quel file a f()
e controllando l'output è esattamente quello che sto facendo nei test unitari per f()
. È ridondante e il doppio del lavoro. Inoltre, mantenere i test quando la funzione cambia è il doppio del lavoro di nuovo.
Nota: f()
può essere ovunque - in una libreria che qualcun altro ha scritto, per esempio, o parte dell'intero programma stesso. Sto cercando di capire le best practice in (non) testare in modo ridondante le funzionalità, non solo in questo piccolo esempio.