这听起来像是对您的问题的一个非常技术性的定义,当然不是与您业务部门的某人交谈的结果。虽然没有什么可以阻止您使用“按示例规范”样式运行单元测试,但这并不是它的真正设计目的。Gherkin应该是问题空间的自然语言表示,就像英语一样,我发现它在更精确的定义方面遇到了困难,例如冒号小于用户,例如 .com 大于.
您可以更改绑定定义以使它们更轻松
而不是使用
[Given("I have sent (.*)")]
public void IHaveSent(string line)
{
DoSomethingWith(line);
}
尝试
[Given("I have sent mail from (.*)")]
public void IHaveSentMailFrom(string email)
{
DoSomethingWith(string.Format("MAIL FROM:<{0}>");
}
所以它变得更像
Given I have sent mail from user@example.com
但是,如果您更全面地定义示例,您将获得更大的好处。代替 user@example.com 让我们称他为 Bill 并定义(在 Gherkin 之外)我们认为 Bill 正在尝试做的事情。例如,Bill 可能会尝试做有效的场景,而 Ted 可能会尝试虚假的场景。
Given I have an email from Bill
When I get a receipt
Then it should be valid
Given I have an email from Ted
When I get a receipt
Then it should be bogus