2010-08-10 64 views
1

我的步骤定义黄瓜:: ArityMismatchError错误

Transform /^user "([^"]*)"$/ do | email | 
    Person.find_by_email(email) 
end 

Given /^login as (user "([^"]*)")$/ do | user | 
    login_as email 
end 

我的特点

login as user "[email protected]" 

我收到此错误

And user "[email protected]" has security role "contact"  # features/step_definitions/security_role_steps.rb:14 
    And login as user "[email protected]"      # 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 "[email protected]"' 

我无法找出任何人可以解释我的黄瓜改造出了什么问题。

回答

2

这是因为围绕括号(用户“([^”] *)” 正在捕获的基团,则实际电子邮件正在捕获另一个。以防止这种情况,使用非捕获组,或不群的。

Given /^login as user "([^"]*)"$/ do | user | 
    login_as email 
end 

Given /^login as (?:user "([^"]*)")$/ do | user | 
    login_as email 
end