當你在你的黃瓜場景中編寫一個步驟時,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.
更新
您也可以使用黃瓜的Multiline String在方案中的步驟:
When I fill in "some_field" with:
"""
your text " with double quotes
"""
然後你就不會需要更改黃瓜生成步驟定義:
When /^I fill in "([^"]*)" with:$/ do |arg1, string|
pending # express the regexp above with the code you wish you had
end
你帶引號的字符串將作爲最後一個參數傳遞。在我看來,這種方法看起來比第一個更重。
謝謝你,我希望有一個更通用的解決方案,而無需爲它寫一個步驟(例如一個轉義字符,我找不到) – SirLenz0rlot 2011-12-16 13:51:44