在具有两个不同参数的行上找到多个Match绑定
本文关键字:绑定 Match 参数 两个 | 更新日期: 2023-09-27 18:28:32
我在同一个功能文件中写了两行(When's)
When user $action1$ $key1$ with $value1$ for $atttributeType_Value$ in $Filename1_SectionId1$
Then abc
When user $action2$ $key2$ with $value2$ in $Filename2_SectionId2$
Then def
以及步骤定义文件中的相应步骤定义
作为
[When(@"user (.*) (.*) with (.*) for (.*) in (.*)")]
public void abc()
{ //operation }
[When(@"user (.*) (.*) with (.*) in (.*)")]
public void def()
{ //operation }
但是,它显示了一个错误,即"找到多个匹配绑定。导航到第一个匹配…"
当我试图导航到第1行时,它的给出错误。。。但当我使用第二行"当"导航时。它导航正常。
我在应该有"<"answers">"的地方使用了"$"。
问题是您的第二个正则表达式:
with (.*) in (.*)
匹配这两条线
with a partridge in a pear tree
with a partridge for Christmas in a pear tree
在第一个例子中,它会选择"鹧鸪"answers"梨树"作为两个论点。在第二篇中,它将选择"圣诞鹧鸪"answers"梨树"作为论据。由于您的第一个正则表达式也与第二行匹配,因此它确实在查找多个绑定。
您可以使用不同的正则表达式。例如,如果您想挑出一个完整的单词,并且不包含任何空格,请尝试('S*)
而不是(.*)
。.
匹配任何内容,包括空格。有关regex的更多信息,请点击此处。
AFAIK Visual Studio集成跳转到它找到的第一步定义。
def()-Steps的Regex也捕获abc-Step的情况。你有没有试着把参数放在单引号里?
比如:
特点:
When user '$action1$' '$key1$' with '$value1$' for '$atttributeType_Value$' in '$Filename1_SectionId1$'
Then abc
When user '$action2$' '$key2$' with '$value2$' in '$Filename2_SectionId2$'
Then def
步骤绑定:
[When(@"user '(.*)' '(.*)' with '(.*)' for '(.*)' in '(.*)'")]
public void abc()
{ //operation }
[When(@"user '(.*)' '(.*)' with '(.*)' in '(.*)'")]
public void def()
{ //operation }
这应该能解决你的问题。