2011-01-05 13 views
7

Ho usato shoulda per un po 'e ho letto e riprodotto con rspec. Non ho fatto un confronto e un confronto approfonditi. Ma mi sembra che ci sia qualche sovrapposizione tra i due, ma che non sono sostituzioni 1-1.rspec e shoulda: complementari o alternativi?

Sto pensando di scrivere alcuni test unitari nel mio sistema di rotaie con rspec, senza sostituire tutti i test esistenti scritti con shoulda. Proprio come un modo per avere la sensazione.

Questa è una buona idea? Posso passare gradualmente da uno all'altro o sto chiedendo problemi?

Eventuali vantaggi chiari di uno rispetto all'altro che dovrei prendere in considerazione?

Grazie!

risposta

12

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.

+0

Ecco alcune altre prospettive su di esso: http://stackoverflow.com/questions/3604564/rspec-vs-shoulda –

+0

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? –

+0

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. –

0

rspec e shoulda sono alternative l'una all'altra. Ho iniziato anche con shoulda e passare a rspec è semplice come s/context/describe/, s/should/it/ e sei pronto per le gare. rspec ha un sacco di trucchi, varie integrazioni e abbinamenti più complessi, quindi lo sto usando più di questi tempi io stesso.

Una delle mie prime frustrazioni era che era quasi impossibile trovare un tutorial che non presupponesse Rails and Cucumber. Non pensarci troppo: c'è molto che puoi fare con esso, ma non devi avere un mostro di una soluzione sul posto prima di poterlo usare.

Problemi correlati