Devo discutere contro la risposta di Chris che sono alternative. Uso Shoulda e Rspec insieme nella mia applicazione Rails e si completano a vicenda.
Questa combinazione consente di scrivere test concisi su una sola riga per elementi ricorrenti come le associazioni e le convalide, oltre a disporre della suite rspec completa per specifiche più complesse. Ottieni il meglio da entrambi i mondi senza conflitti.
Controllare il Shoulda README che mostra come installare lungo il lato Rspec. Dice anche che fornisce "One-Liners: Test- e RSPec-compatibili che testano la funzionalità di Rails comuni, altrimenti sarebbero molto più lunghi, più complessi e soggetti a errori".
Edit (esempi):
Nella parte superiore del mio specifiche, ho sempre dichiarare il mio test di rapporto di classe e di validazione che sono concise e di facile lettura.
describe Component do
context 'relationships' do
it { should belong_to(:technology)}
it { should have_many(:system_components) }
it { should have_and_belong_to_many(:variables) }
it { should have_many(:images).dependent(:destroy) }
it { should have_many(:documents).dependent(:destroy) }
end
context 'validations' do
it { should validate_presence_of(:make) }
it { should validate_presence_of(:model) }
it { should ensure_length_of(:name).is_at_most(100) }
it { should validate_presence_of(:technology_id) }
end
end
Poi il resto della mia spec avranno le prove più complesse in cui sto usando schernisce e mozziconi che provengono da Rspec.
fonte
2011-01-06 01:35:59
Ecco alcune altre prospettive su di esso: http://stackoverflow.com/questions/3604564/rspec-vs-shoulda –
Mi piacerebbe qualche esempio delle cose che fai con la combo che non si poteva fare con una o l'altro. Se ci sono modi in cui posso ripulire i miei test, sono tutto per questo. Stavo usando shoulda + matchy insieme, poi ho scoperto che rspec lo faceva praticamente e se ne andava da lì. Sono solo cose come i controller matcher? –
Ho aggiornato la mia risposta con alcuni dei test shoulda che ho. Una regola che tendo a seguire è che Shoulda viene utilizzato per le macro di classe Rails come le convalide e le relazioni e Rspec è per test più complessi in cui sono richiesti oggetti finti e lo stub dei metodi. –