2016-09-08 39 views
1

在黃瓜(java版本)中,我如何使用一個「then」函數來匹配所有步驟?如何在Cucumber-JVM中使用一個「Then」步驟來匹配任意數量的條件?

比如我想能夠比賽在一個函數以下所有:

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" 

我是否需要寫一個匹配的每個「或」 S嗎?

有沒有一種方法可以爲以上的所有情況編寫一個匹配器?

例如,我怎麼這些組合成一個功能?:

@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

可能會有超過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

不客氣!不用擔心。說實話,我preffer @Reimeus的答案,但我認爲會有趣讓你知道另一種選擇:)謝謝+1 – troig

+1

另一個答案是完美的,但微不足道。此外還有一個優勢:您可以在場景大綱中很好地使用它。 –

相關問題