IntelliJ просит выбрать объявление между шагами Cucumber, которые не совпадают - PullRequest
2 голосов
/ 05 марта 2020

У меня есть два шага, которые имеют некоторые сходства, но не полностью сформулированы одинаково. Однако IntelliJ продолжает просить меня выбирать между ними, как если бы они были дубликатами, и не уверен, почему?

enter image description here

@And("^I add \"([^\"]*)\" as the history|comment|details for the item$")
public void iAddAsTheHistoryForTheItem(String text) {
    addComment(text);
}


@Then("^I am able to add a history|comment|details to the item$")
public void iAmAbleToAddAHistoryToTheItem() {
    addHistory();
    assertFalse(isHistoryClean());
}

Спасибо.

Ответы [ 2 ]

3 голосов
/ 06 марта 2020

Это из-за символа ИЛИ в определении шага (|).

В вашем случае он соответствует обоим определениям шагов из-за слова "комментарий"

Это как вы говорите в IDE: ищите "Я могу добавить историю" ИЛИ ищите " комментируйте ИЛИ ищите «детали к элементу» (для @Then («^ Я могу добавить историю | комментарий | подробности к элементу $»)).

Для определения шага @And ("^ I add \" ([^ \ "] ) \" как история | комментарий | подробности для элемента $ ") у вас есть -> ищите Я добавляю \ "([^ \"] ) \ "в качестве истории ИЛИ ищу 'комментарий' ИЛИ ​​ищу 'детали для элемента'

Я вижу здесь 2 возможных решения:

1) Вы можете попытаться реорганизовать определения шагов таким образом, чтобы избежать текущей ситуации:

@ Затем ("^ Я могу добавить (историю | комментарий | подробности) к элементу $ ")

@ And (" ^ Я добавляю \ "([^ \"] *) \ "как (история | комментарий | подробности) для элемента $")

ИЛИ

2) Вы можете использовать параметр в корнишоне, таким образом, вы можете указать любое значение, и оно не предложит вам оба определения шага

Пример:

Тогда я в состоянии добавить «положить ваше значение здесь» к элементу

, и соответствующее определение шага будет

 @Then("^I am able to add a \"([^\"]*)\" to the item$")
public void iAmAbleToAddAToTheItem(String arg0) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

(и сделать аналогичную модификацию для второго шага)

0 голосов
/ 06 марта 2020

Они содержат много одинаковых слов, делают их совершенно разными, и вам не придется выбирать.

...