RSpec e Cetriolo sono entrambi framework di test. RSpec include il test unitario tradizionale (che significa testare una classe o parte dell'applicazione separatamente dal resto dell'applicazione, quindi il tuo modello fa ciò che dovrebbe fare il tuo modello, il controllore fa quello che dovrebbe fare, ecc.).
RSpec e Cetriolo entrambi sono utilizzati per il test di accettazione (che è chiamato ATDD, BDD, specifica per esempio, ecc. A seconda di chi si chiede). Si tratta di test di integrazione basati sui business case, il che significa che simulano il modo in cui un utente utilizza l'applicazione e utilizza lo stack Rails completo, quindi i problemi con il modo in cui le diverse parti della vostra applicazione lavorano insieme possono essere trovati in un modo trova.
La principale differenza tra RSpec e Cucumber è il fattore di leggibilità aziendale. L'estrazione principale di Cucumber è che le specifiche (caratteristiche) sono separate dal codice di prova, in modo che i proprietari dei prodotti possano fornire o rivedere le specifiche senza dover scavare nel codice. Questi sono i file .feature che componi in Cucumber. RSpec ha un meccanismo simile, ma invece descrivi un passo con un blocco Describe, Context o It che contiene le specifiche di business, e quindi immediatamente il codice che esegue quella dichiarazione. Questo approccio è un po 'più semplice per gli sviluppatori, ma un po' più difficile per i non tecnici.
Quale usare? Se sei l'unico sviluppatore e proprietario del prodotto, allora mi associo a RSpec, ritengo che sia più semplice da comprendere per una persona tecnica, offre alcuni vantaggi nel tenere le cose sotto controllo e sotto controllo e ti impedisce di fare scherzi con RegExs per il test passi. Se stai costruendo questo per un cliente, e sono pratici per quanto riguarda la specifica, vai con Cucumber per il test di accettazione e usa RSpec per i test unitari.
Giusto per dimostrare la differenza principale tra i due:
Cetriolo:
#articles.feature
Given an article exists called "Testing Demonstration"
When I visit the list of articles
Then I should see an article called "Testing Demonstration"
#article_steps.rb
Given /^an article exists called "(.+)"$/ do |title|
FactoryGirl.create(:article, title: title)
end
When /^I visit the list of articles$/ do
visit articles_path
end
Then /^I should see an article called "(.+)"$/ do |title|
page.should have_content title
end
Rspec
describe "Articles" do
let(:article) { FactoryGirl.create(:article) }
context "Index Page" do
before { visit articles_path }
it { page.should have_content article.title }
end
end
Questa serie di blog è eccellente su come ottenere andare con RSpec: http://everydayrails.com/2012/03/12/testing-series-intro.html
Per confonderti ancora di più, Minitest potrebbe anche essere un'opzione –
o anche capibara –
Capybara è davvero un driver che può essere utilizzato in qualsiasi framework di test, non un framework di per sé.Watir-webdriver e selenio sono due cose che svolgono funzioni simili, ma guidano un browser reale e sono molto più lenti di Capybara che guida Rack :: Test – DVG