Quelle est la différence entre RSpec et Cucumber?

J’ai 6 mois d’expérience en développement Rails. J’ai construit une application Web qui est utilisée maintenant avec l’authentification et l’autorisation et la postgresql db.

Je passe à ma deuxième application Rails, mais cette fois, après les leçons apsockets, je souhaiterais la développer en utilisant TDD, car j’ai remarqué qu’il était beaucoup plus facile de la mettre à l’échelle et de corriger les bogues. Il est lent à se développer mais à long terme, c’est beaucoup plus facile à gérer.

J’ai entendu parler de Rspec et de Concombre, mais je suis complètement confus par eux.

J’aimerais savoir quelle est la différence entre RSpec et Cucumber et à quoi ils servent.

Il serait également utile de savoir si, du sharepoint vue d’un débutant (qui est également le seul développeur), un cadre de test est vraiment nécessaire.

RSpec et Cucumber sont tous deux des frameworks de test. RSpec inclut les tests unitaires traditionnels (qui consistent à tester une classe ou une partie de l’application indépendamment du rest de l’application. Votre modèle fait donc ce que votre modèle est censé faire, le contrôleur fait ce qu’il est censé faire, etc.).

RSpec et Cucumber sont tous deux utilisés pour les tests d’acceptation (appelés ATDD, BDD, spécification par exemple, etc.). Il s’agit de tests d’intégration axés sur les affaires, ce qui signifie qu’ils simulent la manière dont l’utilisateur utilise l’application et utilise la stack Rails complète, de sorte que les problèmes liés à la façon dont les différentes parties de votre application trouver.

La principale différence entre RSpec et Cucumber est le facteur de lisibilité. L’attraction principale de Cucumber est que les spécifications (fonctionnalités) sont distinctes du code de test, de sorte que vos propriétaires de produits peuvent fournir ou revoir les spécifications sans avoir à fouiller dans le code. Ce sont les fichiers .feature que vous créez dans Cucumber. RSpec a un mécanisme similaire, mais vous décrivez une étape avec un bloc Describe, Context ou It qui contient la spécification métier, puis vous disposez immédiatement du code qui exécute cette instruction. Cette approche est un peu plus facile à utiliser pour les développeurs, mais un peu plus difficile pour les utilisateurs non techniques.

Lequel utiliser? Si vous êtes le seul développeur et propriétaire de produit, je restrais fidèle à RSpec, je pense que c’est plus facile à comprendre pour un technicien, offre quelques avantages pour garder les choses sous contrôle et vous empêcher de tester les RegEx pas. Si vous créez cela pour un client et que celui-ci est en phase avec la spécification, rendez-vous avec Cucumber pour votre test d’acceptation et utilisez 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 blogs est excellente pour commencer avec RSpec: http://everydayrails.com/2012/03/12/testing-series-intro.html