2011-07-11 20 views
5

He empezado a utilizar SpecFlow y preguntándose que Wold sea posible reutilizar escenarios entre las especificacionesReutilización SpecFlow Escenarios

Básicamente mi idea es la siguiente (i podría ser fundamentalmente mal :))

He escrito un rasgo para validar las navegaciones

Característica: Navegación

I should be able to navigate to all the pages i'm authorized to 

Escenario: Navegar a Boo

Given I enter proper values in Foo 
When I enter Go 
Then I should be taken to Boo** 

Y luego tengo otra especificación que validaría la parte operativa de la Boo

Característica: Validar si Boo está funcionando bien

Por lo tanto, aquí básicamente tengo que navegar a la pantalla Boo primero. Estaba pensando si puedo volver a utilizar el Escenario: Vaya a Boo escenario escrito en navegación

Es esto posible? De lo contrario, ¿cuál es la mejor manera de sortearlo?

/BB

Respuesta

5

Usted tiene dos opciones aquí:

  1. crear una clase que ha compartido pasos, común a muchos escenarios. En su caso, esta clase contendría el paso "Cuando navegue a Boo". Esto entonces estaría disponible para otras funciones.

  2. Puede tener más de un paso con exactamente el mismo nombre/texto, pero puede usar un ScopedStepBinding para asegurarse de que se llama a la versión correcta de ese paso para una función. Por lo tanto, podría tener "Cuando navegue a Boo" que aparece en más de un archivo de características, pero al usar un alcance por pasos, puede controlar qué código se ejecuta para un archivo de características.

+0

Gracias Jason. más o menos lo que estaba buscando! – Illuminati

+0

Agradable :) Me alegro de poder ayudar. –

+3

"Crear una clase que tiene pasos compartidos" -> Esto no es solo una opción, es obligatorio. En SpecFlow, todos los pasos se comparten. Las clases de paso son solo contenedores de pasos, pero no las encapsulan. Por lo tanto, es mejor organizar los pasos en las clases por un aspecto común (ProductSteps, CustomerSteps, PaymentSteps, etc.) y no por función (CheckoutFeatureSteps), ya que los pasos estarán disponibles para otras funciones de todos modos. Esto no cambia la validez de su respuesta, pero descubrí que ser consciente de este detalle ayuda mucho al usar SpecFlow. –