Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cucumber 小黄瓜(SpecFlow)场景大纲步骤中是否可以转义尖括号?_Cucumber_Specflow_Gherkin - Fatal编程技术网

Cucumber 小黄瓜(SpecFlow)场景大纲步骤中是否可以转义尖括号?

Cucumber 小黄瓜(SpecFlow)场景大纲步骤中是否可以转义尖括号?,cucumber,specflow,gherkin,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:<

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

  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因此,它不会被当作占位符?

这看起来像是对您的问题的一个非常技术性的定义,当然不是与您的业务部门中的某个人进行对话所产生的结果。虽然没有什么可以阻止您使用“按示例说明”样式运行单元测试,但这并不是它真正的设计目的。小黄瓜被认为是问题空间的一种自然语言表现形式,就像英语一样,我发现它难以用更精确的定义来表达,比如冒号小于user,在example.com大于

您只需更改绑定定义,使其更轻松一点

而不是使用

[Given("I have sent (.*)")]
public void IHaveSent(string line)
{
    DoSomethingWith(line);
}
试一试

但是,如果您更全面地定义示例,您将获得更大的好处。而不是user@example.com让我们称他为比尔,并在小黄瓜之外定义我们认为比尔试图做的事情。例如,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

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

我不确定我是否同意这样一个前提,即spec-by-example中的每个示例都需要非常高的级别。您假设正在测试的软件的级别高于我在本测试中所表示的级别。我想做的是用具体的例子来定义这个软件的规范,在我看来,一个例子一个例子都很合适。另一个能够使用literal的例子我并不是说它应该是高层次的,只是它应该用文字表达,因为BDD是关于进行对话的,不幸的是,符号很难用这种方式表达。
Given I have sent mail from user@example.com
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