come formulare il risultato di un'azione in BDD / TDD
-
12-09-2019 - |
Domanda
Il titolo probabilmente non è molto chiaro. Ho il seguente esempio in mente:
un oggetto Authenticator autentica un utente utilizzando le credenziali. Esso restituisce un oggetto AuthResult. Questo oggetto AuthResult dice l'autenticazione è riuscita, o che non è riuscito (e se è così, perché non è riuscito, ad esempio, il nome utente non trovato).
Come posso frase questo in un test? 'TestShouldReturnAuthObjectWithStatusSuccessOnValidLogin'?
Soluzione
testValidLoginIsSuccessful o testIsSuccessfulOnValidLogin sembra abbastanza buono per me.
Per i test di errore, si potrebbe usare qualcosa come testGetsCustomMessageOnUserNotFound
Si dovrebbe evitare di mettere i dettagli di implementazione nel nome del metodo.
Altri suggerimenti
Senza vedere come questi test vengono implementate, a quanto pare dalla denominazione che le osservazioni sono imballate troppo.
Se questo test non riesce, dovrete fare un po 'scavare per sapere se è perché (a) nessun oggetto AuthResult è stato restituito, o (b) lo stato non era "successo", e inoltre, non vi fu AuthResult perché l'Authenticator mai connesso al database o fare qualche altra azione necessaria?
Mi piacerebbe il nome del dispositivo When_told_to_authenticate_with_valid_credentials e quindi separare le affermazioni in due osservazioni differenti:
1. should_return_an_AuthResult
2. should_be_successful
Se si deridere quei altre classi come giustamente suggerito Samuel, è possibile stabilire che l'Authenticator si comporta come ci si aspetta:
3. should_connect_to_the_database
4. ecc.