2010-08-10 3 views
1

ma définition de l'étapeconcombre :: erreur de ArityMismatchError après Transform

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

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

ma fonction

login as user "[email protected]" 

Je reçois cette erreur

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]"' 

Je suis incapable de comprendre quelqu'un peut-il expliquer ce qui n'allait pas avec ma transformation de concombre.

Répondre

2

En effet, les parenthèses autour ( utilisateur « ([^ »] *) » ) capturez un groupe, puis l'e-mail réelle capture autre. Pour éviter que, utiliser un groupe non-capture ou ne pas regrouper du tout.

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

ou

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