加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 参数个数错误(0表示1)(ArgumentError)

发布时间:2020-12-17 02:12:09 所属栏目:百科 来源:网络整理
导读:我使用devise作为身份验证系统并创建了一个场景. Scenario: Home page have a login page When I go to the home page And user is not logged in Then I should see "Sign In" 用于步骤定义 When /^user is not logged in$/ do signed_in? == falseend 我还
我使用devise作为身份验证系统并创建了一个场景.

Scenario: Home page have a login page
    When I go to the home page
    And user is not logged in
    Then I should see "Sign In"

用于步骤定义

When /^user is not logged in$/ do
  signed_in? == false
end

我还为黄瓜世界添加了Devise助手.

World(Devise::Controllers::Helpers)

和黄瓜正在生成此错误:

And user is not logged in           # features/step_definitions/web_steps.rb:260
      wrong number of arguments (0 for 1) (ArgumentError)
      ./features/step_definitions/web_steps.rb:261:in `/^user is not logged in$/'
      features/manage_home_page.feature:13:in `And user is not logged in'

它为什么生成以及如何修复它?

更新

signed_in的定义?方法是

# Return true if the given scope is signed in session. If no scope given,return
  # true if any scope is signed in. Does not run authentication hooks.
  def signed_in?(scope=nil)
    [ scope || Devise.mappings.keys ].flatten.any? do |scope| 
      warden.authenticate?(:scope => scope)
    end
  end

它在Devise中定义,我通过将此代码World(Devise :: Controllers :: Helpers)编写到cucumber的paths.rb文件中,将帮助器添加到黄瓜中.

解决方法

试试这个

When /^user is not logged in$/ do
  user_signed_in?.should be_false
end

更新
我想你需要做这样的事情

When /^user is not logged in$/ do |user| 
  #check here user not logged in
end

要么
您可以尝试将功能修改为

Scenario: Home page has a login page
  Given I am on the home page
  And I am not logged in
  Then I should see "Sign In"

然后在步骤中

Given /^user is not logged in$/ do
  visit('users/sign_out')  # this will ensure that the user is not logged in
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读