Cucumber :: ArityMismatchError之后的错误 [英] Cucumber::ArityMismatchError error after Transform

查看:492
本文介绍了Cucumber :: ArityMismatchError之后的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的步骤定义

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

我无法弄清楚任何人

推荐答案

这是因为 user ([^] *)正在捕获某个群组,则实际的电子邮件正在捕获另一个群组,以阻止该群组,使用非捕获群组或完全不进行群组。 / p>

This is because the parentheses around ( user "([^"]*)" ) are capturing a group, then the actual email is capturing another one. to prevent that, use a non-capturing group, or don't group at all.

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

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

这篇关于Cucumber :: ArityMismatchError之后的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆