获取两个具有不同语句的GIVEN的多个匹配绑定

时间:2019-04-01 12:03:56

标签: c# bdd specflow gherkin feature-file

我在Specflow中编写了两个方案,一个用于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会抛出多个匹配绑定?

1 个答案:

答案 0 :(得分:0)

作为Given-属性的参数的字符串是一个正则表达式。在正则表达式中(。*)是万能的。 因此,以the开头的每个步骤都将与此绑定相匹配。

我建议您将步骤更改为the endpoint with name '(.*)'行。

最好的做法是用单引号'括住您的参数。捕获参数更容易,并且VS Extension可以更好地建议绑定框架代码。