我在Specflow中编写了两个Scenario,一个用于UI,另一个用于API。场景和步骤定义如下:
Scenario 1:
@Regression
Scenario Outline: Add Single New External User
Given the <role> is logged on to the portal with <email> and <password>
When the <role> clicks on profile avatar
Something....
Scenario 2:
@GetClientList
Scenario Outline: GET API response for fetching list of Clients matching
criteria entered in the Search Text field
Given the <endpoint>
When I call Get method
Something....
Step Definitions:
[Given(@"the (.*) is logged on to the portal with (.*) and (.*)")]
public void GivenLoginToPortal(string role, string email, string password)
{
//Something
}
[Given(@"the (.*)")]
public void GivenTheEndpoint(string endpoint)
{
Endpoint = endpoint;
}
在这里,当我在第一个场景中导航到给定语句的步骤定义时,它显示发现多个匹配绑定的警告......并且多个匹配绑定指的是第二个给定语句的步骤定义。但我相信既然两个给定语句都不同,那么为什么第一个Given会抛出多个匹配绑定?
您作为Given-属性的参数的字符串是正则表达式。并且(。*)在Regex中是全能的。因此,以the
开头的每一步都将与此绑定相匹配。
我建议你改变一步行the endpoint with name '(.*)'
。
最佳做法是用单引号'
包围参数。捕获参数更容易,VS Extension可以更好地建议绑定骨架代码。