121 votes

Quelle est la différence entre rspec et concombre?

J'ai 6 mois de Rails de l'expérience de développement,j'ai construit une application web des thats en cours d'utilisation maintenant avec l'authentification et l'autorisation et le postgresql base de données.

Im de passer à ma deuxième application rails, mais cette fois, après les leçons apprises, j'aimerais développer à l'aide de TDD, depuis que j'ai remarqué c'est beaucoup plus facile de l'échelle et de corriger les bugs. Sa lente à se développer, mais dans le long terme, il est beaucoup plus facile à traiter.

J'ai entendu parler de Rspec, Cucumber. Mais complètement confus par eux.

Je voudrais savoir quelle est la différence entre Rspec et de Concombre, et quels sont-ils utilisés?

Il serait également utile si à partir d'un débutant point de vue (qui est aussi le seul développeur) si un framework de test est vraiment nécessaire?

342voto

DVG Points 7293

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X