тот же огуречный шаг корнишона, но разные методы - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть шаг

Given I have a pass
  |hotel|

и

Given I have a pass

Один выполняется с данными, а другой - без данных.Чтобы выполнить вышеуказанное требование, я написал две функции:

@Given("^I have a pass$")
public void givenIhaveAPass() {

}

и

@Given("^I have a pass$")
public void givenIhaveAPass(DataTable table) throws Exception {

}

, но это дает ошибку DefinitionTestSuite.initializationError DuplicateStepDefinition Duplicate

Хотите использовать тот же шаг с перегрузкой метода,Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Это неприменимый метод в огурце.На странице cucumber github Issues есть много открытых и закрытых вопросов по вашему вопросу.

В качестве обходного решения я могу предложить следующие методы.Когда вы используете (.*), вам не нужно предоставлять какие-либо аргументы, просто стереть часть 'string' при вызове определения шага:

@Given("^I have a pass(.*)$")
public void givenIhaveAPass() {

}

@Given("^I have a pass$")
public void givenIhaveAPass(DataTable table) throws Exception {

}
0 голосов
/ 19 февраля 2019

Я не думаю, что это возможно, поскольку сопоставление выполняется только с помощью регулярных выражений, а не с учетом параметров.Вы можете сделать два просто

Given I have a pass with: |hotel|

и

Given I have a pass

и сопоставить их в двух ваших java-методах.Таким образом, вы можете дать им более ясное имя.

...