2011-06-07 8 views
14

Heredé una aplicación de Rails (3) y estoy tratando de familiarizarme con las pruebas existentes de Cucumber. Tengo la siguiente configuración en la carpeta de la aplicación 'características' (He echado un vistazo a los archivos que no son relevantes, por ejemplo, características adicionales y pasos)"rake" ejecuta todas mis pruebas de Cucumber bien, pero "pepino" no tiene los pasos

/features 
    /people 
    new-person.feature 
    /step_definitions 
    people_steps.rb 
    web_steps.rb 
    /support 
    env.rb 
    paths.rb 
    selectors.rb 

Si me quedo 'rastrillo', entonces se ejecuta todas las características en características/personas/nueva-persona.feature, usando correctamente los pasos enumerados en step_definitions.

Sin embargo, no quiero ejecutar el rastrillo cada vez, ya que lleva demasiado tiempo, solo quiero ejecutar una prueba específica en Pepino, p. cucumber features/people/new-person.feature -l 8

Cuando hago esto, ejecuta la característica pero no ha cargado los pasos. Recupero esto:

Using the default profile... 
Feature: Add a new person 
    In order to allocate tasks to people 
    As a community manager 
    I want to add a new person 

    Scenario: Secondary navigation should contain "Add new person" # features/people/new-person.feature:8 
    Given I am on the new person page       # features/people/new-person.feature:9 
     Undefined step: "I am on the new person page" (Cucumber::Undefined) 
     features/people/new-person.feature:9:in `Given I am on the new person page' 
    Then I should not see "Add new person"      # features/people/new-person.feature:10 
     Undefined step: "I should not see "Add new person"" (Cucumber::Undefined) 
     features/people/new-person.feature:10:in `Then I should not see "Add new person"' 

1 scenario (1 undefined) 
2 steps (2 undefined) 
0m0.005s 

You can implement step definitions for undefined steps with these snippets: 

Given /^I am on the new person page$/ do 
    pending # express the regexp above with the code you wish you had 
end 

Then /^I should not see "([^"]*)"$/ do |arg1| 
    pending # express the regexp above with the code you wish you had 
end 

If you want snippets in a different programming language, just make sure a file 
with the appropriate file extension exists where cucumber looks for step definitions. 

¿Por qué no está Cucumber cargando los pasos en? Supongo que necesito exigir los pasos en algún lugar, pero no puedo averiguar dónde.

Gracias, Max

+0

Para en aras del argumento, mueva el archivo de características a un directorio. No tengo un requerimiento en ninguna parte de mis varios archivos .feature, y no vi ninguna configuración goop en características/soporte/archivos que parecían apuntar a esto. ¿Estás seguro de que tu código people_steps.rb es funcional? ¿Ya has sacrificado una gallina? – jaydel

+0

@jaydel - todo funciona bien cuando lo ejecuto simplemente con 'rake', es decir, todos los pasos están bien cargados. Me gustaría seguir subdividiendo mis funciones solo por el bien de organizarlas en grupos sensatos. –

+0

@jaydel - pero al mover los archivos de características a la carpeta de características principales se solucionó el problema ... Debe haber un requerimiento en algún lugar que necesite agregar un "../" adicional. –

Respuesta

11

Max Williams encontró la respuesta a su pregunta:

EDITAR - encontró la respuesta, aquí: https://rspec.lighthouseapp.com/projects/16211/tickets/401-envrb-not-loaded-when-running-individual-features-in-sub-directories

En config/cucumber.yml hay una línea que tiene este aspecto :

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags [email protected]"

cambio a

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags [email protected] --require features/"

Esto es como la adición de --require features/ hasta el final de su prueba de funcionamiento pepino y hace que se cargue todo correctamente.

+0

Gracias Sebastien :) –

+0

@Max, debe aceptar esta respuesta. – nessur

+0

también, si no desea agregar opciones predeterminadas, puede simplemente agregar '-r features /' a pepino cuando lo ejecute. – nessur

0

No tenía un archivo cucumber.yml por cambiar, por el motivo que sea. Entonces, simplemente creando un archivo /config/cucumber.yml en blanco y poniendo la línea en él:

std_opts = "--format # {ENV ['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~ @ wip --require features/"

no funcionó. (Esto no es sorprendente, pensé que se suponía que había más a él que apenas esa sola línea.)

he encontrado un buen ejemplo de un trabajo, un archivo de ejemplo cucumber.yml completo aquí: http://jdfrens.blogspot.com/2010/03/uh-yes-i-did-define-that-cucumber-step.html

Cuestiones relacionadas