RSpec et le Concombre sont à la fois des infrastructures de test. RSpec comporte des Tests Unitaires (ce qui signifie que le test d'une catégorie ou d'une partie de l'application dans l'isolement du reste de l'application. Si votre modèle n'est que votre modèle est censé faire, le contrôleur fait ce qu'il est censé faire, etc).
RSpec et de Concombre, les deux sont utilisés pour les Tests d'Acceptation (Qui est appelé ATDD, BDD, de la Spécification par l'Exemple, etc en fonction de qui vous demandez). Ce sont des cas piloté par les Tests d'Intégration, ce qui signifie qu'ils simuler la façon dont un utilisateur utilise l'application et utilise l'intégralité de la pile Rails pour que les problèmes avec la façon dont les différentes parties de votre application peut être trouvé dans une manière que les tests unitaires ne trouverez pas.
La principale différence entre RSpec et le Concombre sont les affaires facteur de lisibilité. Le concombre est l'attraction principale est que le cahier des charges (fonctions) sont séparées du code de test, de sorte que votre produit les propriétaires peuvent fournir ou de revoir les spécifications sans avoir à creuser à l'aide de code. Ce sont les .fonction des fichiers que vous faites dans le Concombre. RSpec a un mécanisme similaire, mais au lieu de vous décrire une étape avec un Décrire, le Contexte ou le bloc contenant la spécification, et puis tout de suite avoir le code qui exécute cette instruction. Cette approche est un peu plus facile pour les développeurs de travailler avec, mais un peu plus difficile pour les non-technique, les gens.
Pour l'utiliser? Si vous êtes le seul développeur et propriétaire du produit, puis je m'en tiendrais à RSpec, je pense que c'est plus facile pour une personne ayant des connaissances techniques pour comprendre, il offre quelques avantages dans le maintien des choses dont l'étendue et sous contrôle, et gardez-vous de vous embêter avec RegExs pour les étapes de test. Si vous êtes à la construction de ce pour un client, et ce sont des mains-en ce qui concerne les Spécifications, rendez-vous avec le Concombre pour votre Test d'Acceptation et d'utilisation RSpec pour les Tests Unitaires.
Juste pour démontrer la principale différence entre les deux:
Concombre:
#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
Cette série de blog est une excellente se passe avec RSpec: http://everydayrails.com/2012/03/12/testing-series-intro.html