Когда вы пишете шаг в сценарии с огурцом, Cucumber предлагает вам стандартное регулярное выражение для сопоставления текста внутри двойных кавычек (регулярное выражение [^ "] * означает последовательность из 0 или более символов любого вида, кроме символа«) , Поэтому для When I fill in "some_field" with: "SOME_STRING"
будет предложено следующее определение шага:
When /^I fill in "([^"]*)" with: "([^"]*)"$/ do |arg1, arg2|
pending # express the regexp above with the code you wish you had
end
Но вы не обязаны использовать это регулярное выражение и можете писать любые подходящие слова. Например, следующее сопоставление будет соответствовать любой строке, которая следует после двоеточия и заканчивается в конце строки (и эта строка может содержать кавычки):
When /^I fill in "([^"]*)" with: (.*)$/ do |field, value|
pending # express the regexp above with the code you wish you had
end
Тогда ваш сценарий будет выглядеть так:
When I fill in "some_field" with: "all " this ' text will ' be matched.
Обновление
Вы также можете использовать Многострочную строку огурца на шаге Сценария:
When I fill in "some_field" with:
"""
your text " with double quotes
"""
И тогда вам не нужно будет изменять определение шага, генерируемое Cucumber:
When /^I fill in "([^"]*)" with:$/ do |arg1, string|
pending # express the regexp above with the code you wish you had
end
Ваша строка с кавычками будет передана в качестве последнего аргумента. На мой взгляд, этот подход выглядит тяжелее, чем первый.