Можно ли экранировать угловые скобки в шагах схемы сценария Gherkin (SpecFlow)?

У меня есть набросок сценария, в который мне нужно включить буквальные угловые скобки:

  Given I have sent "MAIL FROM:<[email protected]>"
  When I send "<command>"
  Then I should get a <code> reply
  Examples:
    | command         | code |
    | RCPT TO:<bogus> | 5xx  |
    | RCPT TO:<valid> | 2xx  |

Можно ли избежать угловых скобок вокруг [email protected], чтобы он не рассматривался как заполнитель?


person KingPong    schedule 07.02.2013    source источник


Ответы (2)


Это выглядит как очень техническое определение вашей проблемы, а не как результат разговора с кем-то из вашего бизнес-отдела. Хотя ничто не мешает вам проводить модульное тестирование с использованием стиля Спецификация на примере, на самом деле он не предназначен для этого. Огурец должен быть естественным языковым представлением проблемного пространства, и, как и в случае с английским языком, я обнаружил, что он борется с более точными определениями, такими как двоеточие меньше, чем пользователь, например, точка 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 [email protected]

Однако вы получите гораздо большую пользу, если определите пример более полно. Вместо [email protected] давайте назовем его Биллом и определим (вне корнишона), что, по нашему мнению, пытается сделать Билл. Например. Билл может пытаться реализовать действительные сценарии, в то время как Тед может пробовать фиктивные.

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
person AlSki    schedule 07.02.2013
comment
Я не уверен, что согласен с тем, что каждый пример в спецификации за примером должен быть чрезвычайно высокого уровня. Вы предполагаете, что тестируемое программное обеспечение имеет более высокий уровень, чем то, что я представил в этом тесте. Что я пытаюсь сделать, так это определить спецификации для этого программного обеспечения, используя конкретные примеры, которые, на мой взгляд, очень хорошо подходят для конкретных примеров. - person KingPong; 20.05.2013
comment
Другой пример того, где можно было бы использовать литерал ‹, был бы полезен: если бы я писал систему для обработки уравнений и хотел бы использовать пример y ‹ x + 5. Должен ли я был бы написать Учитывая, что y меньше, чем x + 5 ? Просто это кажется очень недальновидным ограничением. - person KingPong; 20.05.2013
comment
Я не говорю, что это должен быть высокий уровень, просто это должно быть выражено словами (см. dannorth.net /introduction-bdd), так как BDD предназначен для разговора, и, к сожалению, символы довольно сложно выразить таким образом. - person AlSki; 21.05.2013

Кажется, ответ на этот вопрос заключается в том, что нет, невозможно использовать буквальные угловые скобки с парсером Specflow Gherkin.

person KingPong    schedule 25.11.2014