Piense en Pepino como prueba toda su aplicación, de afuera hacia adentro, donde RSpec es la unidad de pruebas de módulos específicos. Empiezas especificando qué comportamientos quieres que tenga tu aplicación en Cucumber y luego ingresas a RSpec y describes las clases y módulos que hacen que funcione.
Me costó un poco conseguirlo, pero estoy descubriendo que Cucumber es muy bueno para describir en términos generales qué funciones desea que su aplicación haga y RSpec es realmente bueno para describir cómo debería hacerlo realmente.
Así que diría en sus historias de pepino qué tipo de característica desea y escriba pasos súper sencillos para proporcionar información y ver los resultados. Luego, desciende a RSpec y escribe especificaciones sobre cómo debería hacerlo realmente.
Digamos que su función es la capacidad de buscar nombres de usuario en un sitio web.Se podría escribir una función de pepino y la primera (y sólo la primera) escenario como este:
Feature: Search users
In order to find people with similar interests as myself
As a user
I want to search for people
Scenario: Search for similar hobbies
Given there is a search page
And there is a list of hobbies
And one of the hobbies is "full contact ironing"
When I select "full contact ironing"
And press search
Then a list of users with the hobby "full contact ironing" are shown
Ejecuta pepino, le indica los pasos que se está perdiendo, que copia los y crear los pasos simples para comprobar para esto, pero no escribas ningún código todavía.
Cuando termine con las definiciones de sus pasos, abra en RSpec y comience a escribir especificaciones sobre cómo desea que funcione. (Pepino, por supuesto, debe estar fallando)
describe "SearchController" do
it "should respond to searches" do
sc = SearchController.new
sc.should respond_to(:search)
end
end
Ejecuta RSpec y ver fracasar luego apagarse y escribir el código:
class SearchController
def search
end
end
Eso es todo. Ahora ejecuta tu prueba nuevamente. Debería pasar, así que comience a ser más específico y comience a describir cómo usará realmente la función de búsqueda. No quería profundizar demasiado en él. Solo quería darle la idea de que describa lo que quiere en Cucumber y luego describa cómo debería funcionar realmente en RSpec.
Por supuesto que puedes hacer todo en Cucumber o todo en RSpec, pero realmente he descubierto que Cucumber me ayuda a decir de manera muy simple lo que quiero, si trato de hacer eso en RSpec me atasco en los detalles. Si uso Cucumber primero para describir la función básica que quiero y por qué entonces puedo acceder a RSpec y decir cómo quiero que la función realmente funcione.
Habrá duplicaciones en sus pruebas a veces, que no son muy SECAS, pero si lo considera como un problema de nivel de detalle, puede que no le moleste demasiado. Estaba haciendo mucha duplicación de esfuerzos al principio hasta que me di cuenta de que debería decir en general lo que quiero en Cucumber y luego decir específicamente lo que quiero en RSpec.
Esto es solo la idea de un principiante de cómo usar las herramientas, pero parece que me funciona bien hasta ahora. Probablemente te he dado un ejemplo horrible, pero estoy tratando de transmitir el detalle general a detalles específicos que he encontrado útiles al usar las herramientas.
Estoy totalmente de acuerdo, esta ha sido mi experiencia también. –