di: Carlo Pecchia 02 Settembre 2008
Molto spesso sentiamo parlare di Test Driven Development (TDD), ma non altrettanto spesso vediamo applicare questo approccio durante la fase di sviluppo del software.
Tra le varie cause e "motivazioni" quella che sentiamo più spesso ripetere è attribuibile alla mancanza di tempo, mancanza di tempo per un'attività - vogliamo ribadirlo - necessaria tanto quanto il codice stesso per il corretto funzionamento dell'applicazione che si vuole sviluppare.
Ruby, in RubyOnRails in particolare, offre le "consuete" librerie TestUnit per aiutarci a scrivere i test. In questo articolo esaminiamo ShouldA, un'interessante gemma che, estendendo TestUnit ci permette di scrivere dei test molto leggibili, e con relativa semplicità.
Un esempio per "stuzzicare" la curiosità, questo script di test (in Rails):
# test "classico" class PostTest < ActiveSupport::TestCase def setup @p = posts(:one) end def test_should_have_valid_title assert @p.valid? # il titolo non può essere nil @p.title = nil assert ! @p.valid? # il titolo non può essere vuoto @p.title = '' assert ! @p.valid? end end
è equivalente a questo:
# con "shoulda"
class PostTest < ActiveSupport::TestCase
context "A post instance" do
setup do
@p = posts(:one)
end
should_require_attributes :title
end
end
Come possiamo vedere, utilizzando Shoulda è possibile scrivere dei test molto più concisi grazie all'uso delle macro che la gemma ci mette a disposizione. Ma l'aspetto più importante, e quello meno percepito in prima battuta, è il fatto che abbiamo una documentazione eseguibile del comportamento del nostro sistema.
Inoltre, Shoulda è perfettamente integrato con TestUnit, quindi possiamo tranquillamente continuare a scrivere i nostri test nella maniera "classica" (ovvero con metodi il cui nome inizia con 'test_'), ovvero possiamo estendere i nostri test man mano che prendiamo confidenza con ShouldA.
Guida ActiveSupportUna panoramica sulle funzionalità più importanti di ActiveSupport:... |
Guida Ruby On Rails 2Scoprire le novità di Ruby on Rails 2, memorizzare i dati con... |
Guida Ruby e il WebUn percorso alla scoperta delle potenzialità offerte da Ruby nella... |
Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .
Iscriviti alla newsletter