Я получаю ноги от влаги с помощью SpecFlow, и мне действительно нравится.
За исключением нескольких тернистых проблем... например, кода настройки функции и сценария.
В одном файле общего назначения под названием InfrastructureSteps.cs
у меня есть общий код настройки, который должен запускаться для каждого сценария - поэтому мой метод выглядит примерно так:
[BeforeScenario]
public void SetupDbContext()
{
// define some basic stuff, set up a database transaction context etc.
}
Это нужно выполнить до каждого сценария, и до сих пор он работал нормально.
Но теперь у меня есть два сценария в тестовом файле шагов, который также требует довольно обширной настройки, прежде чем их можно будет запустить. Поэтому я отметил свой сценарий в .feature
тегом:
@needs_extra_setup
Scenario: .....
Given .....
When .....
Then ......
и реализовал тестовый метод установки BeforeScenario
:
[BeforeScenario("needs_extra_setup")]
public void DoExtraSetupForMyScenario()
{
// do stuff
}
Он работает - он вызывается - но он называется до, метод общего назначения [BeforeScenario]
получает вызов:-( и, следовательно, он не работает - материал, настраиваемый в этом способе настройки общего назначения отсутствует и приводит к сбою моего кода.
Итак, есть ли способ в SpecFlow заказать методы [BeforeScenario]
? Или я могу указать конкретный метод [BeforeScenario]
, чтобы сначала выполнить "базовый" [BeforeScenario]
метод, например, вызов базового метода в методе переопределения?
Конечно, я мог бы называть этот "базовый" [BeforeScenario]
метод явно, но это похоже на подход с санным молотом.....
Любые идеи? Мысли? Указатели?