Cucumber场景:在场景步骤中给出并清空String作为参数的值

时间:2015-03-03 18:13:30

标签: java cucumber bdd

我有一个像这样实施的步骤:

@When("I add an attribute named '(.+)' with unit '(.+)' to the item named '(.+)'")
public void addAttributeToAndItem(String attributeName, String unitName, String itemName){
     .....
}

在我的Cucumber场景中,我想添加和归属没有单位,所以“单位名称”的值应为空字符串。如何在我的场景步骤中指定这个空字符串。

我试过这个:

    Scenario: add attribute to an item
        When  I add an attribute named 'Color' with unit ' ' to the item named ' Car'

但它不起作用。 ''总是看起来像一个值(空格)而不是空字符串。请有人帮帮我吗?

2 个答案:

答案 0 :(得分:3)

您可以将其更改为'',但由于(.+)至少会匹配其中任何一项,因此使用''将与该步骤不匹配。

尝试在步骤定义中使用(.*)来匹配空字符串,即''

答案 1 :(得分:0)

我不明白为什么你需要知道单位是一个空字符串。如果您按照上述建议并输入'',则(.+)(.*)将捕获两个撇号。您可以添加以下断言行以确认:

assert '' == unit应该失败

assert "''" = unit应该通过

可能有一种方法可以让它与可选的捕获一起使用,但我的正则表达式技能是不够的,我得到了未定义的步骤。