在 Ruby/Capybara case 语句中使用正则表达式会引发 'Regex matched 0 arguments' 错误
Using regex in Ruby/Capybara case statement throws 'Regex matched 0 arguments' error
我正在使用 Cucumber/Selenium 网络驱动程序和水豚测试网站
我正在尝试在我的 step_definition 中构建一个案例声明,这样我网站上的每个页面就不会有多个 "given"。
我有以下内容:
Given /^I am on the .+ page$/ do |page_name|
case page_name
when "I am on the home page"
visit ('/')
else
puts "page #{page_name} not found"
end
end
当我 运行 cucumber
在终端中进行 运行 测试时,我得到
Given I am on the home page # features/step_definitions/home_page.rb:3
Your block takes 1 argument, but the Regexp matched 0 arguments. (Cucumber::Glue::ArityMismatchError)
features/step_definitions/home_page.rb:3:in /^I am on the .+ page$/'
features/homepage.feature:5:in
Given I am on the home page'
我试过将正则表达式包装在 ()、{}、[]、" "、'' 以及它们的各种组合中,我检查了代码的缩进,我 认为 正确。
我已将我的正则表达式输入到在线验证器中,它可以很好地识别它。
您的块采用参数 page_name
但您的 Regex 中没有捕获组用作该参数。你可能想要像
这样的东西
Given /^I am on the (.+) page$/ do |page_name|
所以 .+
部分被捕获并作为 page_name
传递
我正在使用 Cucumber/Selenium 网络驱动程序和水豚测试网站 我正在尝试在我的 step_definition 中构建一个案例声明,这样我网站上的每个页面就不会有多个 "given"。
我有以下内容:
Given /^I am on the .+ page$/ do |page_name|
case page_name
when "I am on the home page"
visit ('/')
else
puts "page #{page_name} not found"
end
end
当我 运行 cucumber
在终端中进行 运行 测试时,我得到
Given I am on the home page # features/step_definitions/home_page.rb:3 Your block takes 1 argument, but the Regexp matched 0 arguments. (Cucumber::Glue::ArityMismatchError) features/step_definitions/home_page.rb:3:in
/^I am on the .+ page$/' features/homepage.feature:5:in
Given I am on the home page'
我试过将正则表达式包装在 ()、{}、[]、" "、'' 以及它们的各种组合中,我检查了代码的缩进,我 认为 正确。
我已将我的正则表达式输入到在线验证器中,它可以很好地识别它。
您的块采用参数 page_name
但您的 Regex 中没有捕获组用作该参数。你可能想要像
Given /^I am on the (.+) page$/ do |page_name|
所以 .+
部分被捕获并作为 page_name