JBehave暧昧的一步

时间:2012-12-04 23:13:36

标签: java ambiguity jbehave

说我有:

@Given("first name is $firstName")
@Given("first name is $firstName and last name is $lastName")

以下步骤将被标记为含糊不清:

Given first name is John and last name is Smith

不使用引号括起第一个参数,如何修复此步骤以使其仅匹配第二个参数?使用引号分别围绕这两个参数也具有相同的模糊性问题。

每个参数的长度是否有限制?是否有某些字符无法传入?

3 个答案:

答案 0 :(得分:8)

您可以使用步骤优先级解决此问题,如下所示:http://jbehave.org/reference/stable/prioritising-steps.html

通过使用两个参数为变量设置更高的优先级,可以解决您的问题:

@Given("first name is $firstName")
@Given(value = "first name is $firstName and last name is $lastName", priority = 1)

我尝试了你的例子,通过这个组合,两个步骤分开了。

(编辑:我的初始解决方案有参数的引号,但它也没有效果)

答案 1 :(得分:1)

我认为这种情况可以这样写:

Given first name is John
And last name is Smith

步骤:

@Given("first name is $firstName")
@And("last name is $lastName")

您可以先创建人物对象,然后在“@Given”步骤中设置名称和姓氏 如果您需要添加其他属性,例如电子邮件,则只需创建另一个步骤:

@And("the email is $email")
public addEmail(String email) {
    person.setEmail(email);
}

所以这个问题不会发生,你的代码会更加可重用。

答案 2 :(得分:0)

对我有用的是用脚踝括号(<>)代替美元符号($),即

@Given("a person with first name <firstName>")

@Given("a person with first name <firstName> and last name <lastName>")