2016-09-08 7 views
1

В огурце (java-версия), как я могу совместить все шаги с одной «затем» функцией?Как совместить любое количество условий с одним шагом «Далее» в Cucumber-JVM?

Например, я хотел бы быть в состоянии матча все следующие в одной функции:

Then the response status will be "200" 
Then the response status will be "200" or "302" 
Then the response status will be "200" or "302" or "404" 

Мне нужно написать Сличитель для каждого из «или» с ли?

Есть ли способ, чтобы я мог написать один совпадение для всех случаев выше?

Например, как я объединить их в одну функцию ?:

@Then("^the response status should be \"([^\"]*)\"$") 
public void the_response_status_should_be(String arg1) throws Throwable { 
    System.out.println("** the response status should be "+arg1); 
} 

@Then("^the response status should be \"([^\"]*)\" or \"([^\"]*)\"$") 
public void the_response_status_should_be_or(String arg1, String arg2) throws Throwable { 
    System.out.println("** the response status should be "+arg1+" "+arg2); 
} 

@Then("^the response status should be \"([^\"]*)\" or \"([^\"]*)\" or \"([^\"]*)\"$") 
public void the_response_status_should_be_or(String arg1, String arg2, String arg3) throws Throwable { 
    System.out.println("** the response status should be "+arg1+" "+arg2+" "+arg3); 
} 

Возможно ли это?

Спасибо!

+0

может быть _more_ чем 3 значения? – Reimeus

+0

@ Reimeus возможно! Я мог бы ограничить его до 3, а затем, возможно, проверить, не определены ли каждый из них или нет? – Kayvar

+0

AFAIK, что вы пытаетесь, невозможно в его текущей форме, поскольку количество аргументов файла шага всегда исправлено. Поэтому вариант ниже выглядит как лучший вариант – Reimeus

ответ

3

Учитывая, что список значений can grow можно отображающих к List с функцией файла, содержащего

... 
Then the response status will be one of the following 
    | response status | 
    | 200    | 
    | 302    | 
    | 404    | 
.... 

с огуречной кодом

@Then(^the response status will be one of the following$) 
public void doResponseStuff(List<String> responses){ 
    // use response codes... 
}  
+0

Отличная идея! Спасибо :) – Kayvar

2

Альтернативой @Reimeus хороший ответ, вы также может соответствовать List<Integer> в вашем определении шага.

определение Характеристика:

... 
Then the response status will be 200,302,404 
... 

Java код шаг:

@When("^the response status will be (.*)$") 
public void the_response_status_should_be(List<Integer> statusList) throws Throwable { 
    //... 
} 

Я думаю, что оба варианта действительны для ваших требований. Надеюсь, это поможет

+1

Это отличный ответ! Мне было трудно выбирать между вами, поэтому я выбрал человека, который ответил первым, но этот ответ также будет работать для моей проблемы :) Спасибо! – Kayvar

+1

Добро пожаловать! Не беспокойтесь. Честно говоря, я предпочитаю ответить на @Reimeus, но я думал, что будет интересно, если вы знаете другой выбор :) Спасибо за +1 – troig

+1

Другой ответ прекрасен, но тривиальным. Существует также одно преимущество этого: вы можете использовать его очень хорошо в сценариях сценария. –