在线找到多个匹配绑定有两个不同的参数

时间:2015-12-31 11:06:47

标签: c# .net bdd specflow feature-file

我在同一个功能文件

中写了两行(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 }

但是,它显示错误为“找到多个匹配绑定。导航到第一个匹配..”

当我尝试导航第一行时给出错误...但是当我使用第二行时导航。它正确导航。

我在“<”的地方使用了“$”和“>”应该在那里。

2 个答案:

答案 0 :(得分:6)

问题是你的第二个正则表达式:

DataGridView

匹配这两行

ListView

首先,它会选择"鹧and"和一棵梨树"作为两个论点。在第二个,它会拿起圣诞节的鹧and"和一棵梨树"作为论点。由于你的第一个正则表达式也匹配第二行,它确实找到了多个绑定。

您可以使用其他正则表达式。例如,如果您想挑选一个完整的单词而不包含任何空格,请尝试with (.*) in (.*) 而不是with a partridge in a pear tree with a partridge for Christmas in a pear tree (\S*)匹配任何内容,包括空格。有关正则表达式的更多信息here

答案 1 :(得分:0)

AFAIK Visual Studio集成跳转到它找到的第一步定义。

def()的正则表达式 - 步骤也捕获了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 }

那应该解决你的问题。