RoR:错误的参数数量

时间:2011-04-15 23:22:45

标签: ruby-on-rails ruby integration-testing capybara

我正在尝试在我的Rails 3代码中调用一个方法,但我得到了:

  

失败/错误:integration_sign_in wrong_user        引发ArgumentError:          错误的参数数量(0表示1)

这是调用代码(在RSpec助手中):

before(:each) do
    wrong_user = Factory(:user, :email => "test@test.com", :password=>"hellohello", :password_confirmation => "hellohello")
    integration_sign_in wrong_user
end

所以它显然传递了一个论点。如果由于某种原因参数为null,那会不会认为它不是参数?

RELEVANT BACKSTORY:为了测试,我刚从webrat切换到capybara。正如Railscast 257中所建议的那样,我还安装了launchy和database_cleaner gems。当我使用webrat时,上面的代码按预期工作,但现在(我相信与database_cleaner相关)出现了问题。

可能相关:在我的spec_helper.rb中,我改为:  config.use_transactional_fixtures = false(尽管“真的”有同样的问题)

有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:4)

看起来参数错误实际上并不在这个函数中(即使堆栈顶部看起来像它。实际错误在integration_sign_in函数内部:

def integration_sign_in(user)
        visit signin_path
        fill_in :email,    :with => user.email
        fill_in :password, :with => user.password
        click_button
    end

看起来click_button需要在capybara中有一个参数,但它不适用于webrat。

答案 1 :(得分:0)

integration_sign_in(wrong_user)