Ciao,
per la prima volta ho avuto la possibilit di iniziare un progetto con
la traquillit di poter perdere qualche giornata ad imparare le basi di
uno sviluppo BDD. Dopo le prime ore con “sindrome da pagina bianca”, mi
sono messo di buona lena a provare a scrivere le prime storie con Steak.
Un esempio:
feature %q{
Creazione di nuove Agenzie
Per poter organizzare la contrattistica con i Promoter
Come responsabile
Voglio poter gestire Agenzie
} do
scenario ‘Creazione di nuove Agenzie’ do
visit new_agency_path
test_fields_after_clicking_on "Crea Agenzia" do
fill :text, :name, "Ragione sociale", "Test Agenzia"
fill :text, :legal_representative_first_name, "Nome
rappresentante legale", “Stefano”
fill :text, :legal_representative_last_name, “Cognome
rappresentante legale”, “Verna”
fill :text, :vat_number, “P. IVA”, “12345”
fill :text, :phone_number, “Numero di telefono”, “12345”
fill :text, :notes, “Note”, “ABC”
and_expect_changes_on { Agency.first }
end
page.should have_notice("Agenzia: creazione avvenuta con
successo!")
end
scenario “Non possibile creare nuove Agenzie senza Ragione sociale”
do
visit new_agency_path
click_on “Crea Agenzia”
page.should have_alert(“Agenzia: errore durante la creazione!”)
page.should have_content(“Ragione sociale non pu essere lasciato
in bianco”)
end
end
Nel primo scenario potete vedere una DSL che, alla decima storia simile,
che ho costruito per rendere pi leggibile il codice. Fondamentalmente,
riempie i vari campi della pagina con il valore specificato, e dopo il
click al bottone del form controlla che gli attributi siano stati
effettivamente cambiati coerentemente su un qualche oggetto (in questo
caso, Agency.first).
Mi chiedevo se poteste darmi dei suggerimenti di vita vissuta da
utilizzare come “rules of thumb” nelle mie prossime avventure. Ci sono
dei controlli che avrebbe senzo fare magari a livello pi basso? Ci sono
degli scenari che avreste aggiunto? Ci sono cose che avreste spezzato su
pi scenari? Come avreste gestito voi la storia per una azione :create
del genere?
Grazie per il vostro aiuto!
Stefano V.