Quiero reutilizar algunos pasos de pepino, pero parece que no puedo encontrar el camino correcto.
Quiero escribir un paso como:
Given /^I login with (.*) credentials$/ |type|
# do stuff with type being one of "invalid" or "valid"
end
Pero luego da otro paso como:
Given /^I login successfully$
# call "Given I login with valid credentials"
end
Entonces, al probar la autenticación de usuario, puedo usar la primera, pero en la mayoría de los otros lugares, puedo usar la última y no tener que reprogramar el código.
¿Hay alguna manera de llamar a ese otro paso, o simplemente pongo la lógica en un método auxiliar y llamo a dicho método desde cada tarea (básicamente una refactorización de extracción de método, que, después de leer mi pregunta, me hace creer que es en realidad la mejor manera) de todas formas)?
do
necesario para iniciar eldo...end
bloque en la definición del paso de Ruby. De hecho, es necesario.Respuestas:
ACTUALIZACIÓN : El método que se describe a continuación ha quedado obsoleto. La forma recomendada de llamar a un paso desde dentro de otro paso ahora se ve así:
Método antiguo y obsoleto (para referencia):
Puede llamar a pasos de otros pasos como este:
Si todos los escenarios dentro de una característica requieren esto (u otros pasos), también puede agregar un Fondo a cada característica, con los pasos comunes, así:
fuente
steps %Q{Given I am logged in}
steps
método no existía. Vea mi respuesta a continuación.Tenga en cuenta que el método para llamar a los pasos dentro de los pasos ha cambiado en las versiones recientes de pepino, que verá si obtiene un error como "ADVERTENCIA: El uso de 'Dado / Cuando / Entonces' en las definiciones de pasos está obsoleto, use 'paso' para llame a otros pasos en su lugar: /path/to/step_definitions/foo_steps.rb: 631: in `block in '". Consulte la wiki de pepino para obtener más detalles.
La esencia del cambio es que ahora debería utilizar los métodos
step
osteps
.fuente
syntax error, unexpected tIDENTIFIER, expecting keyword_end
stackoverflow.com/questions/43319331/…Llamar a pasos a partir de definiciones de pasos es una mala práctica y tiene algunas desventajas :
Aslak Hellesøy recomienda extraer acciones populares a World en lugar de reutilizar los pasos. Aísla esas acciones en un solo lugar, hace que este código sea más fácil de encontrar. También puede extraer código a clases o módulos Ruby habituales.
Aquí hay una discusión útil sobre el tema en la lista de correo de Cucumber - enlace
fuente
Es mejor incluir los pasos en% {} en lugar de comillas. Entonces, no necesita escapar de las comillas dobles que deberá usar con frecuencia:
fuente
Reutilice las palabras clave en el archivo de características que proporcionará la reutilización del código.
NO es muy recomendable llamar step defs dentro de step defs.
Escribiría mi archivo de características de esta manera,
En mi definición de paso, (esto es Java)
De esta manera, hay mucha reutilización de código. Su mismo Given and Then maneja escenarios válidos e inválidos. Al mismo tiempo, su archivo de características tiene sentido para los lectores.
fuente