Повторное использование сценариев SpecFlow

Я начал использовать SpecFlow и задался вопросом, можно ли повторно использовать сценарии между спецификациями.

В основном моя идея такова (я могу быть в корне неправ:))

У меня есть одна функция, написанная для проверки навигации.

Функция: навигация

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

Сценарий: перейдите к Boo

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

И затем у меня есть еще одна спецификация, которая подтвердила бы операционную сторону Boo.

Функция: проверка правильности работы Boo

Итак, здесь мне в основном нужно сначала перейти к экрану Boo. Я подумал, можно ли повторно использовать сценарий Scenario: Navigate to Boo, написанный в Navigation.

Это возможно? Иначе, как лучше обойти это?

/BB


person Illuminati    schedule 11.07.2011    source источник


Ответы (1)


Здесь у вас есть два варианта:

  1. Создайте класс с общими шагами, общими для многих сценариев. В вашем случае этот класс будет содержать шаг «Когда я перехожу к Boo». Затем это будет доступно для других функций.

  2. Вам может понадобиться более одного шага с одним и тем же именем/текстом, но вы можете использовать ScopedStepBinding, чтобы убедиться, что для функции вызывается правильная версия этого шага. Таким образом, вы можете иметь «Когда я перехожу к Boo» появляющийся более чем в одном файле функций, но с помощью пошаговой области видимости вы можете контролировать, какой код выполняется для файла функций.

person Jason Evans    schedule 11.07.2011
comment
Спасибо Джейсон. почти то, что я искал! - person Illuminati; 11.07.2011
comment
Хороший :) Рад, что смог помочь. - person Jason Evans; 11.07.2011
comment
Создайте класс с общими шагами --› Это не только вариант, но и обязательно. В SpecFlow все шаги являются общими. Классы шагов являются только контейнерами шагов, но не инкапсулируют их. Поэтому лучше организовать шаги в классах по общему аспекту (ProductSteps, CustomerSteps, PaymentSteps и т. д.), а не по функциям (CheckoutFeatureSteps), потому что шаги в любом случае будут доступны для других функций. Это не меняет достоверности вашего ответа, но я обнаружил, что знание этой детали очень помогает при использовании SpecFlow. - person Francesc Castells; 02.11.2012
comment
@Francesc - я знаю, откуда ты. Да, вы правы, говоря, что шаги распределяются независимо, я не ясно дал это понять в своем ответе. К чему я стремился, так это к идее размещения общих общих шагов в отдельных файлах, которые вы описываете. - person Jason Evans; 02.11.2012