if there is an if
statement, do I need to test for true
and false
?
Sì
Perché?
Un test è pensato per esercitare il tuo codice e mostrare come funziona.
- Mostra i percorsi felici in cui tutto funziona.
- Mostra i percorsi infelici in cui qualcosa va storto e in che modo viene comunicato.
Se voglio usare questa funzione / oggetto / API / sistema software, dovrei essere in grado di guardare questi test e capire cosa accadrà quando passerò X in. Restituirà null, restituirà un oggetto, genererà un'eccezione , bloccherà, è asincrono?
Ora il tuo codice ha un ramo: if true do X else do Y
.
Diciamo che provi per il ramo X, ma non testare il ramo Y. È Y valido?
Ovviamente Y deve compilare bene, ma alcune lingue sono piuttosto liberali riguardo alla definizione di "bene compilato". JavaScript è in quella comunità liberty e fortunata. Questa non è una brutta cosa, semplicemente non rende "compilato bene" una dichiarazione soddisfacente sulla sua validità.
Se la lingua non ha problemi con esso, perché è anche importante che il ramo Y sia valido?
Capovolgalo, perché è importante che Branch X sia valido? La risposta sarà probabilmente qualcosa come "Branch X è un comportamento aziendale", "Branch X è necessario per la funzione Z" o "Branch X è quando tutto funziona". Il ramo Y rappresenta il contro-caso: quando il comportamento aziendale è diverso, o la funzione non ha bisogno di X, o qualcosa è andato storto. In breve, esiste uno scenario valido in cui verrà selezionato il ramo Y. Azione: Descrivi lo scenario nel test.
Questa è stata una semplificazione, c'è un altro caso: "Il ramo Y non viene mai usato". Azione: Elimina quel ramo.
Per il contesto, considera GoTo Fail . Questo bug potrebbe essere stato facilmente identificato da una serie di test che hanno esercitato ciascun ramo. Non farlo ha aperto quel software a comportamenti scorretti.
Apprendimento ulteriore
Cercherò YouTube per alcuni video e altrove per un libro:
- Cerca uno dei video di Kent Beck su Unit Testing, trova anche uno dei suoi test di unità / libri di programmazione estremi.
- Cerca una presentazione chiamata GUTS di Kevlin Henney, guarda anche le altre sue presentazioni sugli errori.
Per quanto riguarda la sintassi, consulta la documentazione di Jasmine .