Можно ли написать шаг корнишона на нескольких строках?


Я новичок в языке корнишонов, и это кажется мне очень важным вопросом, но я не мог найти на него ответа.

Я знаю, что можно написать многострочный шаговый аргумент в Gherking, например:

Given a blog post named "Random" with Markdown body
  """
  Some Title, Eh?
  ==============
  Here is the first paragraph of my blog post. Lorem ipsum dolor sit amet,
  consectetur adipiscing elit.
  """

Мой вопрос о написании одного шага на нескольких строках, что-то вроде этого:

Given that Gherkin language allows me to write my step definitions 
   on multiple lines
Then my test cases would be easier to read :)

В приведенном выше примере я использовал '' в качестве символа продолжения линии. Кстати, я попробовал пример выше и получил ошибку парсера.

2 6

2 ответа:

Вы попытались и получили ошибку синтаксического анализа. Я предполагаю, что написание длинной строки на одной строке не дало вам ошибки разбора. Поэтому вы ответили на свой собственный вопрос "нет".

Я хотел бы предложить вам спросить себя, почему линии должны быть длинными. Желаемое поведение, действительно ли оно нуждается в таком количестве деталей, что линия становится очень длинной?

Часто можно выразить себя короче, перефразировав предложение. Также возможно, что вы могли бы сломать длинный предложение с использованием ключевых слов корнишона и или Но.

Да, мы можем написать шаг корнишона на нескольких строках, используя тройной набор двойных кавычек ("""). Корнишон распознает тройной набор двойных кавычек как ограничительные разделители для многострочной строки и передает его. Любой контент, который вы пишете между тройным набором двойных кавычек, будет передан в ваше определение шага в виде одной строки.

Как и в моем текущем проекте capybara, я написал шаг корнишона на нескольких строках, как показано ниже:

Scenario: Some test scenario
  Given Bob is on "www.abc.com"
  When Bob creates team "Test Team"
  Then Bob sees message:
      """
      As the Team Captain you will be responsible for paying for the team after 
      registration closes. You will be emailed instructions at the close of 
      registration.
      """
And Bob clicks "Next" button

Определение шага для мульти линия корнишонов Шаг:

And(/^(\S*) sees message:$/) do |user, message|
  page.should have_content(message)
end

В этом я использовал содержание, переданное как оно есть. Вы также можете разделить свой контент и использовать его по мере необходимости. Для получения дополнительной информации, пожалуйста, обратитесь к ссылке ниже: http://asymmetrical-view.com/2011/06/02/cucumber-gherkin-and-multiline-arguments.html

Надеюсь, это поможет :)