如何在重命名要素文件中的步骤时让SpecFlow更改步骤定义?

时间:2014-11-18 18:41:20

标签: definition specflow feature-file

假设我在下面的功能文件中有一个场景

鉴于我以“超级”用户身份登录 当我点击登录时 然后显示主页

使用相应的步骤定义

[Given(@"I log in as ""(.*)"" user")]
public void GivenIHaveLogInAsUser(string p0)
{
    ScenarioContext.Current.Pending();
}

现在我要改变

Given I log in as "super" user

Given I have logged in as "super" user

当我在功能文件中进行此更改时,如何让SpecFlow在步骤定义中自动进行此更改。

2 个答案:

答案 0 :(得分:1)

这是不可能的,我不相信。你有两个选择:

  • 修改步骤定义文本以匹配新文本
  • 也将新定义添加到该步骤
像这样:

  [Given(@"I log in as ""(.*)"" user")]
  [Given(@"I have logged in as ""(.*)"" user")]  
  public void GivenIHaveLogInAsUser(string p0)
  {
      ScenarioContext.Current.Pending();
  }

这将允许两个文本匹配的步骤

答案 1 :(得分:1)

这个帖子迟到了,但你可以使用visual studio查找并替换启用了正则表达式的工具来同时替换步骤定义和步骤实现。

例如对于步骤定义:Given I have a message '(.*)' that is (.*) characters long,我们可以使用步骤定义本身来搜索任何匹配步骤,并替换为新步骤。 $ n可用于结转在查找中拾取的正则表达式匹配。

查找:I have a message '(.*)' that is (.*) characters long

替换:I have a message $1 that is $2 characters in length

结果:'I have a message 'myMessage' that is 100 characters long'变为'I have a message 'myMessage' that is 100 characters in length'