Migliorare i test in Ruby con ShouldA

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.

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto