Кто-нибудь знает, поддерживает ли огурец / Java функциональность нескольких шагов для доступа к одному и тому же stepDefinition?
Чего я пытаюсь добиться - это использовать данный шаг, который в данный момент используется какКогда (в другом более сложном тесте, где текущее Когда становится просто предварительным условием)
В моем предыдущем опыте (Specflow / .Net) я мог бы использовать что-то вроде
[Given(@"the user added a (.*) to the cart")]
[When(@"the user adds a (.*) to the cart")]
public void WhenTheUserAddsATotheCart(string product){
////code that adds to the cart
}
Если я используюПо той же методологии, что и в Specflow, создается исключение DuplicateStepDefinitionException.Потому что Cucumber не учитывает ключевые слова (данные, когда и т. Д.) При сопоставлении шагов с определениями шагов.Cucumber ищет только regEx в определениях шагов, поэтому мне нужно иметь только одно определение шагов (учитывая ИЛИ, когда).Значение
[When(@"the user adds a (.*) to the cart")]
также будет соответствовать
[Given(@"the user adds a (.*) to the cart")]
Моя проблема в том, что мы используем данные в прошедшем времени и когда в настоящем времени.
Так что вопрос: как я могу использовать одну и ту же реализацию для двухэтапных определений?
Единственное решение, которое я вижу, состоит в том, чтобы извлечь содержимое метода, реализующего данный объект, в другой метод и вызвать его как в данном определении шага, так и в разделе Когда.. Что-то вроде:
[Given(@"the user added a (.*) to the cart")]
public void GivenTheUserAddedATotheCart(string product){
addToTheCart(product);
}
[When(@"the user adds a (.*) to the cart")]
public void WhenTheUserAddsATotheCart(string product){
addToTheCart(product);
}
public void addToTheCart(String product){
////code that adds to the cart
}
... но я не считаю это хорошим решением