2012-08-01 14 views
91

Tengo 6 meses de experiencia en el desarrollo de Rails. He creado una aplicación web que está en uso ahora con autenticación y autorización y postgresql db.¿Cuál es la diferencia entre RSpec y Cucumber?

Pasaré a mi segunda aplicación Rails pero esta vez, después de las lecciones aprendidas, me gustaría desarrollarla usando TDD, ya que noté que es mucho más fácil escalarla y corregir errores. Su desarrollo es lento pero a la larga es mucho más fácil de tratar.

He oído hablar de Rspec and Cucumber pero estoy completamente confundido por ellos.

Me gustaría saber cuál es la diferencia entre RSpec y Cucumber y para qué se utilizan.

También sería útil saber si, desde la perspectiva de un principiante (que también es el único desarrollador) si realmente se necesita un marco de prueba.

+4

Para confundirte aún más, Minitest también podría ser una opción –

+2

o incluso capybara –

+5

Capybara es realmente un controlador que se puede utilizar en cualquiera de los marcos de prueba, no un marco en sí mismo.Watir-webdriver y Selenium son dos cosas que hacen funciones similares, pero manejan un navegador real y son mucho más lentas que la conducción de Carpincho Rack :: Test – DVG

Respuesta

269

RSpec y Cucumber son ambos frameworks de prueba. RSpec incluye pruebas unitarias tradicionales (lo que significa probar una clase o parte de la aplicación de forma aislada del resto de la aplicación. Por lo tanto, su modelo hace lo que su modelo debe hacer, el controlador hace lo que se supone que debe hacer, etc.).

Tanto RSpec como Cucumber se usan para las Pruebas de aceptación (que se denominan ATDD, BDD, Especificación por ejemplo, etc. según a quién se lo pregunte). Estas son pruebas de integración impulsadas por casos de negocios, lo que significa que simulan la forma en que un usuario usa la aplicación y usa la pila completa de Rails para que los problemas con la forma en que las diferentes partes de la aplicación funcionan juntas se puedan encontrar de una manera encontrar.

La principal diferencia entre RSpec y Cucumber es el factor de legibilidad del negocio. El principal atractivo de Cucumber es que las especificaciones (características) son independientes del código de prueba, por lo que los propietarios de sus productos pueden proporcionar o revisar las especificaciones sin tener que buscar el código. Estos son los archivos .feature que creas en Cucumber. RSpec tiene un mecanismo similar, pero en su lugar se describe un paso con un bloque de Describir, Contexto o It que contiene la especificación comercial, y luego tiene el código que ejecuta esa declaración. Este enfoque es un poco más fácil de trabajar para los desarrolladores, pero un poco más difícil para las personas sin conocimientos técnicos.

¿Qué usar? Si usted es el único desarrollador y propietario del producto, entonces me quedaría con RSpec, creo que es más fácil de entender para una persona técnica, ofrece algunas ventajas para mantener las cosas bajo control y mantenerlo alejado de los RegExs para la prueba pasos. Si está creando esto para un cliente, y son prácticos con respecto a la Especificación, vaya con Pepino para su Prueba de aceptación y use RSpec para las Pruebas unitarias.

Sólo para demostrar la diferencia principal entre los dos:

Pepino:

#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 

Esta serie blog es excelente en conseguir ir con RSpec: http://everydayrails.com/2012/03/12/testing-series-intro.html

+15

Esta es una excelente respuesta. Muchas gracias por su tiempo y consejo. Hay muchos libros sobre rieles que he leído, pero hasta ahora no he encontrado uno que haga este tipo de distinciones y explica cuál es cuál. Gracias de nuevo – banditKing

+1

No podría recomendar esta respuesta menos a nadie que lo necesite. ¡Gracias por los detalles! – Ikon

+1

Esta es de hecho una de las respuestas más completas y fáciles de entender en stackoverflow (¡completa con un gran ejemplo!) – Sheharyar

Cuestiones relacionadas