2011-11-29 13 views
25

Voglio iniziare l'immersione in BDD. Non ho mai usato TDD prima e sono non so se dovrei iniziare imparando RSpec e poi saltare a Cucumber o semplicemente andare direttamente a usare Cucumber.cetriolo contro RSpec

Ho letto su Internet su entrambi e mi sembra che Cetriolo potrebbe essere una "sostituzione" per RSpec. Ho ragione o dovrei essere uno usato per certe cose e l'altro per gli altri?

+0

http://stackoverflow.com/questions/393622/rspec-vs-cucumber-rspec-stories –

risposta

7

Sì, cetriolo e rspec sono entrambi utilizzati per BDD.

Personalmente preferisco Cetriolo, ma alcune persone lo trovano offoff e preferiscono il test per essere meno inglese, più codice. Entrambi sono ottimi strumenti, però.

70

Cetriolo e RSpec sono entrambi utilizzati per BDD ma hanno usi diversi.

Pensate cetriolo a descrivere ciò che accade dal punto di vista dell'utente, attraverso l'interazione con il browser web. Quindi puoi avere passaggi come:

Given I'm not logged in 
When I login 
Then I should be on the user dashboard page 

Abbastanza ampio, ma c'è molto da fare sotto il cofano. Cucumber è utile per garantire che tutte queste funzionalità e funzionalità di alto livello siano coperte (ad esempio, quando l'utente effettua l'accesso, viene indirizzato alla pagina giusta). Ma non è un buon strumento per testare il codice di livello inferiore. Ecco dove arriva RSpec.

Prendi l'esempio di login sopra. Il tuo utente potrebbe accedere con un indirizzo email o nome utente. Probabilmente vuoi assicurarti che l'indirizzo email sia valido o che il nome utente abbia una certa lunghezza ... o che la cosa che stanno usando per accedere sia unica. Dovresti farlo nel tuo modello utente con una convalida.

E 'un esempio banale, ma questo è il genere di cose che ci si prova utilizzando RSpec (nel vostro/modelli file spec/user_spec.rb). Questo è non qualcosa che testare con Cucumber.

linea in modo di fondo è:

cetriolo per le prove di livello superiore che descrivono un'ampia funzionalità come visto dal punto di vista dell'utente

RSpec per le prove di livello inferiore che descrivono dettagli per il modo in cui il classi, metodi, modelli, regolatore , ecc. dovrebbe funzionare davvero

Questo post in realtà è davvero un ottimo lavoro di spiegare, quando per la transizione da uno strumento all'altro:

http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/

Ho anche consiglia "The RSpec Book" e "Rails Test Prescriptions" per buone risorse su entrambi gli strumenti e test in generale.

P.S. - Non confondere le cose, ma puoi usare RSpec per le cose di alto livello. Ma parte di questa decisione dipende dallo strumento che preferisci o dal fatto che tu stia lavorando o meno con un cliente non tecnico che trarrebbe maggior vantaggio dalla sintassi user-friendly di Cucumber per la descrizione degli scenari.

+0

+1 per il link dell'articolo, che è una lettura obbligata. –

3

Kenton ha fatto un ottimo lavoro con questa risposta.Ecco come di RSpec e cetriolo gli autori vedono:

Usiamo cetriolo per descrivere il comportamento delle applicazioni e utilizzare RSpec per descrivere il comportamento degli oggetti.

Anche se usiamo cetriolo a concentrarsi sul comportamento di alto livello e utilizzare RSpec di concentrarsi sul comportamento più granulare, ciascuno può essere usato sia per scopo.