在具有两个不同参数的线上找到多个匹配绑定
Multiple Match bindings found on line with two different parameters
我在同一个功能文件中写了两行(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 }
但是,它显示错误 "Multiple match bindings found. Navigating to first match.."
当我尝试导航第一行时出现错误...但是当我使用第二行导航时。导航正常。
我在应该是"<"和">"的地方用了"$"
据我所知,Visual Studio 集成跳转到它找到的第一步定义。
def()- Steps 的正则表达式也捕获了 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 }
这应该可以解决您的问题。
问题是你的第二个正则表达式:
with (.*) in (.*)
匹配这两行
with a partridge in a pear tree
with a partridge for Christmas in a pear tree
首先,它将选择 "partridge" 和 "a pear tree" 作为两个参数。在第二个中,它将选择 "partridge for Christmas" 和 "a pear tree" 作为参数。由于您的第一个正则表达式也与第二行匹配,因此它确实找到了多个绑定。
您可以使用不同的正则表达式。例如,如果你想挑出一个完整的单词并且不包含任何空格,请尝试使用 (\S*)
而不是 (.*)
。 .
匹配任何内容,包括空格。有关正则表达式的更多信息 here.
我在同一个功能文件中写了两行(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 }
但是,它显示错误 "Multiple match bindings found. Navigating to first match.."
当我尝试导航第一行时出现错误...但是当我使用第二行导航时。导航正常。
我在应该是"<"和">"的地方用了"$"
据我所知,Visual Studio 集成跳转到它找到的第一步定义。
def()- Steps 的正则表达式也捕获了 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 }
这应该可以解决您的问题。
问题是你的第二个正则表达式:
with (.*) in (.*)
匹配这两行
with a partridge in a pear tree
with a partridge for Christmas in a pear tree
首先,它将选择 "partridge" 和 "a pear tree" 作为两个参数。在第二个中,它将选择 "partridge for Christmas" 和 "a pear tree" 作为参数。由于您的第一个正则表达式也与第二行匹配,因此它确实找到了多个绑定。
您可以使用不同的正则表达式。例如,如果你想挑出一个完整的单词并且不包含任何空格,请尝试使用 (\S*)
而不是 (.*)
。 .
匹配任何内容,包括空格。有关正则表达式的更多信息 here.