我的步骤定义
Transform /^user "([^"]*)"$/ do | email |
Person.find_by_email(email)
end
Given /^login as (user "([^"]*)")$/ do | user |
login_as email
end
我的专辑
login as user "ca@example.org"
我收到此错误
And user "ca@example.org" has security role "contact" # features/step_definitions/security_role_steps.rb:14
And login as user "ca@example.org" # features/step_definitions/security_role_steps.rb:10
Your block takes 1 argument, but the Regexp matched 2 arguments. (Cucumber::ArityMismatchError)
features/step_definitions/security_role_steps.rb:10:in `/^login as (user "([^"]*)")$/'
./vendor/plugins/shway_skeletons/lib/shway_skeletons.rb:94:in `send':in `/^login as (user "([^"]*)")$/'
features/manage_security_roles.feature:14:in `And login as user "ca@example.org"'
我无法弄清楚任何人都可以解释我的黄瓜变换出了什么问题。
答案 0 :(得分:2)
这是因为(用户“([^”] *)“)周围的括号正在捕获一个组,然后实际的电子邮件正在捕获另一个。防止,使用非捕获组,或根本不分组。
Given /^login as user "([^"]*)"$/ do | user |
login_as email
end
或
Given /^login as (?:user "([^"]*)")$/ do | user |
login_as email
end