Я создал пользовательский шаг огурца для проверки места назначения для ссылки, и я использую новую встроенную поддержку Cucumber в web_steps для определения области поиска.Таким образом, у меня есть два шага огурца:
# My step to verify the link
Then /^"([^\"]*)" should link to (.*)$/ do |link_text,page_name|
page.should have_link(link_text, :href => path_to(page_name))
end
# Cucumber's built in step to scope things
# Single-line step scoper
When /^(.*) within ([^:]+)$/ do |step, parent|
with_scope(parent) { When step }
end
Я использую это, имея сценарии огурца, которые делают что-то вроде
And "home" should link to the home page within the "Email Signature" section
Моя проблема в том, что я получаю неоднозначные совпадения на вышемежду этими двумя шагами, потому что предложение «inside» нельзя отличить от «домашней страницы», потому что у последней нет ограничивающих кавычек.
Я пытался изменить шаг ссылкичитать так, думая, что это может разрешить неоднозначность, не сопоставляя «внутри», но я думаю, что «внутри» поглощается предыдущей группой:
Then /^"([^\"]*)" should link to (.*)(?!within)$/ do |link_text,page_name|
page.should have_link(link_text, :href => path_to(page_name))
end
Любые мысли о том, как решить эту проблему