Как использовать отрицательное выражение в Cucumber Java - PullRequest
0 голосов
/ 27 февраля 2019

В Cucumber вы можете написать тогда выражения и их определения шагов, чтобы проверить результаты.Проблема в том, что я не хочу писать 2 разных определения шагов для проверки результата.Один пример может быть таким:

Then the transaction is successful

и

Then the transaction is not successful

Как я могу обойти это?Я обнаружил, что в Ruby вы можете объединить определения шагов, используя дополнительные группы, как описано [здесь] .То есть:

Then /^I should( not)? see the following columns: "([^"]*)"$/ do |negate, columns|
  within('table thead tr') do
    columns.split(', ').each do |column|
      negate ? page.should_not(have_content(column)) : page.should(have_content(column))
    end
  end
end

Но я не знаю, возможно ли это на Java или нет.И даже если это какой тип переменной я должен захватывать?

Ответы [ 2 ]

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

В Java я бы создал один метод с группами захвата (is | is not) и вывел бы логическое значение из того, которое я сравнил бы со значением.С другой стороны, это добавляет логику к вашей тестовой реализации, так что есть кое-что, что нужно сказать о решении @ diabolist, состоящем из двух разных определений шагов.

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

Почему бы не написать два определения шагов.Каждый по теме проще, не требует регулярных выражений.Если вы делегируете работу, которую выполняют определения шагов, вспомогательному методу, вы также можете удалить почти все дублирование кода

Then I should see the following columns |cols|
  should_see_cols(cols)
end

Then I should not see the following columns |cols|
  should_not_see_cols(cols)
end

Теперь у вас есть супер простые кристально чистые определения шагов, и вы можете написать свой метод / методыкак пожелаешь.

Дублирование определения шага не имеет значения, если все ваши определения шагов просто делают один вызов вспомогательного метода.Вы можете быть СУХОЙ, как вам нравится, с вашими вспомогательными методами и при этом сохранять ваши сценарии очень простыми и избавлять от необходимости использовать регулярные выражения и сложную логику в ваших пошаговых определениях.

...