角度括号可以在Gherkin(SpecFlow)场景概要步骤中进行转义吗?

时间:2013-02-07 01:34:12

标签: cucumber specflow gherkin

我有一个场景大纲,其中我需要包含文字尖括号:

  Given I have sent "MAIL FROM:<user@example.com>"
  When I send "<command>"
  Then I should get a <code> reply
  Examples:
    | command         | code |
    | RCPT TO:<bogus> | 5xx  |
    | RCPT TO:<valid> | 2xx  |

是否可以绕过user@example.com左右的尖括号,以便不将其视为占位符?

2 个答案:

答案 0 :(得分:0)

这看起来像是对您的问题的一个非常技术性的定义,当然不是与您的业务部门中的某人进行对话所导致的。虽然没有什么可以阻止您使用规范示例样式运行单元测试,但实际上并不是它的设计目标。 Gherkin 应该是问题空间的自然语言表示,就像英语一样,我发现它与更精确的定义相悖,例如冒号小于用户,例如dot 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正在尝试做什么。例如。比尔可能正在尝试做有效的场景,而特德可能会尝试虚假的场景。

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

答案 1 :(得分:0)

似乎这个问题的答案是,不,不可能在Specflow的Gherkin解析器中使用文字尖括号。