我正在尝试在我的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
(尽管“真的”有同样的问题)
有什么想法吗?感谢。
答案 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)