如何在 Specflow 中使用正则表达式

How use Regular Expressions in Specflow

我的问题是:

如何在 Specflow 中使用正则表达式编写步骤?

例如我要验证网页上显示如下信息:

"The contract xxxx has been successfully saved ".

注意: xxxx可以包含数字和字母,动态生成。

Then The message "????" is displayed

谢谢。

我会让你的步骤更多地关注你期望发生的事情,而不是它是如何发生的:

Then I get an indication that the contract has been saved successfully

然后当您执行该步骤时,您可以使用正则表达式检查预期的消息。

Then("I get a message indicating that the contract has been saved")
public void ThenIGetAMessage()
{    
    //pseudo code
    Regex regex = new Regex("The contract [0-9a-zA-Z]+ has been successfully saved"
    regex.Match(result).Should().BeTrue();
}

但如果您想在场景中包含消息匹配文本,那么我可以想到几个选项:

首先,传递准确的正则表达式来匹配:

Then the message "The contract [0-9a-zA-Z]+ has been successfully saved" is displayed

代码如下:

Then("the message "(.*)" is displayed")
public void ThenIGetAMessage(string regex)
{    
    //pseudo code
    Regex regex = new Regex(regex);
    regex.Match(result).Should().BeTrue();
}

或为合同编号使用占位符

Then the message "The contract <ContractNumber> has been successfully saved" is displayed

代码如下:

Then("the message "(.*)" is displayed")
public void ThenIGetAMessage(string regex)
{    
    //pseudo code
    Regex regex = new Regex(regex.Replace("<ContractNumber>","[0-9a-zA-Z]+"));
    regex.Match(result).Should().BeTrue();
}