Cucumber步骤定义正则表达式排除。

3

我能够帮助您翻译Cucumber步骤定义文件中与正则表达式有关的内容。我的很多步骤都是这样的类型:

Given I am on the search page

我通常使用这个通用模式来编写大部分的步骤定义,并使用默认的Webrat正则表达式来捕获它,它看起来像这样:

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

问题在于,我需要单独处理一个名为“results”的页面,并且我不知道如何修改上述正则表达式以排除说“Given I am on the results page”的行。

更具体的正则表达式(用于结果页面)应该优先匹配,因此您不需要更改通用的正则表达式。 - jfs
那实际上是我尝试的第一件事情之一,但我仍然收到有关两个正则表达式匹配的错误。 - Swaraj
1个回答

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

谢谢,最终我没有使用正则表达式,而是为每种情况编写了单独的正则表达式,但我刚刚尝试了一下,它肯定有效。 - Swaraj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接