Sort of.
It è un modo per organizzare i test, ma è più di quello. Si comporta come i test di integrazione originali di Rails, ma è molto più facile da usare. La grande vittoria qui è che la tua sessione viene mantenuta in modo trasparente nell'intero Scenario
.
Un'altra cosa che sta succedendo con Cucumber è che si è (si presume che siano) test dal punto di vista di un browser o di un client che utilizza il proprio codice. Se vuoi, puoi usare i passaggi per creare oggetti e impostare lo stato, ma di solito vuoi che i tuoi passi seguano i movimenti richiesti per raggiungere quello stato in primo luogo.
Per esempio si potrebbe fare questo:
Given /I have a user account/ do
@user = Factory.create(:user)
# ... more user set up
end
Ma probabilmente si dovrebbe fare qualcosa di simile a questo, invece:
Given /I have a user account/ do
visit new_user_url
fill_in "user_login", :with => "some name"
fill_in "user_password", :with => "foo"
# ... whatever else your sign up page needs
end
E naturalmente è possibile passare in argomenti per uno di quei passi per dare al codice chiamante un controllo più preciso sul comportamento del passo.
Quello che ho generalmente fatto con i miei test è il seguente.
- Io uso shoulda, ma anche rspec va bene.
- Scrivo i miei test di autorizzazione negativa (ad esempio, Accesso negato è previsto) come test funzionali di Rails.
- Scrivo i miei test di autenticazione positiva (ovvero, gli utenti fanno ciò che dovrebbero fare) come funzioni di Cucumber.
E, naturalmente, ho ancora scrivere Rails unit test per i miei modelli, biblioteche, aiutanti, ecc
Non sono d'accordo sul fatto che l'esempio "dovrebbe" sia migliore dell'esempio "possibile". Il consenso generale è che è perfettamente corretto usare le fabbriche in determinati passaggi per impostare le condizioni preliminari per ciò che è effettivamente testato in Quando passi. –
Sicuro. Io uso le fabbriche anche in alcuni dei miei passi. C'è un discreto livello di soggettività coinvolto. Stavo cercando di indicare lo scopo generale di Cucumber (guidare il tuo software come farebbe un utente). Non stavo cercando di prescrivere un unico vero modo di scrivere tutti i passaggi. – jdl