说我有:
@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
不使用引号括起第一个参数,如何修复此步骤以使其仅匹配第二个参数?使用引号分别围绕这两个参数也具有相同的模糊性问题。
每个参数的长度是否有限制?是否有某些字符无法传入?
答案 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>")