2010-08-10 62 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