Исключить регулярное выражение определения шага огурца

Мне нужна помощь с регулярным выражением в файле определения шага Cucumber. Многие из моих шагов относятся к типу:

Given I am on the search page

Я использую этот общий шаблон для большинства своих определений шагов и использую регулярное выражение Webrat по умолчанию, чтобы подобрать его, которое выглядит следующим образом:

Given /^(?:|I )am on (.+)$/ do |page_name|
     visit path_to(page_name)
end

Проблема в том, что мне нужно обрабатывать страницу с названием «результаты» по-другому, и я не знаю, как изменить указанное выше регулярное выражение, чтобы исключить строки, которые говорят: «Учитывая, что я нахожусь на странице результатов».


person Swaraj    schedule 19.10.2010    source источник
comment
Более конкретное регулярное выражение (для страницы результатов) должно выиграть, поэтому вам не нужно изменять общее регулярное выражение.   -  person jfs    schedule 19.10.2010
comment
На самом деле это была одна из первых вещей, которые я попробовал, но я все еще получаю сообщение об ошибке соответствия обоих регулярных выражений.   -  person Swaraj    schedule 20.10.2010


Ответы (1)


Вы можете использовать негативный взгляд в будущее, чтобы решить эту проблему:

Given /^(?:|I )am on (?!the results)(.+)$/ do |page_name|
    p page_name
end

Given /^I am on the results page$/ do
   p 'We matched the results page'
end
person matth    schedule 28.10.2010
comment
спасибо, я закончил тем, что не использовал регулярное выражение, а вместо этого написал отдельные регулярные выражения для каждого случая, но я просто попробовал это, и это определенно работает. - person Swaraj; 29.10.2010