Как обработать логическую операцию ИЛИ из шага огурца в Java - PullRequest
0 голосов
/ 30 мая 2019

У меня есть шаг Cucumber, который я хочу выполнить в зависимости от оператора, переданного на шаге Cucumber

verify word does exists in log
clear the logs

, или я могу передать

verify word does not exists in log
not clear the logs

, и Gherkin для этого будет

("^verify word does(not|) exists in log$")
("^(|not )clear the logs$")

Могу ли я справиться с этим на Java?

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

Ответы [ 3 ]

0 голосов
/ 31 мая 2019

Я нашел решение, я сделал это на Java, как показано ниже

 @Then("^verify word does(not|) exists in log$")
    public void verifyLogs(String action) {

        switch statement
        code logic

//or
        if(action.contains("not")){
            code logic
        }
}
0 голосов
/ 06 июня 2019

Исходя из ваших примеров, я предполагаю, что у вас есть два разных варианта («делает» или «нет»). У вас есть несколько вариантов ввода этого в определение шага, например

с использованием групп захвата:

@Then("^verify word (does|does not) exist in log$")

с использованием регулярного выражения:

@Then("^verify word (.*) exist in log$")

используя выражения огурца :

@Then("verify word {string} exist in log")

Далее вам нужно будет реализовать определение шага, чтобы сделать что-то другое в зависимости от того, содержит ли передаваемая вами строка «not».

public void verifyLogs(String shouldContain) {
        if(action.contains("not")){
            // call helper method to verify logs **do not** contain the word
        }
        // call helper method to verify logs **do** contain the word
}

В качестве альтернативы, вы можете использовать два разных определения шагов: @Then («^ проверить слово существует в журнале $») public void verifyLogs (String shouldContain) { // вызов вспомогательного метода для проверки журналов do содержит слово }

и

@Then("^verify word does not exist in log$")
public void verifyLogs(String shouldContain) {
        // call helper method to verify logs **do not** contain the word
}

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

0 голосов
/ 31 мая 2019

Вот решение в Ruby, оно может дать вам представление о том, как обновить ваш шаг и определение шага.

Шаг:

And verify word does exist in log
And verify word does not exist in log

Step Def:

And(/^verify word does( not)? exist in log$/) do |negative|
    if negative
        # negative logic
    else
        # positive logic
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...