2011-04-15 78 views
4

我试图调用一个方法在我的Rails 3的代码,但我得到:回报率:错误编号参数

Failure/Error: integration_sign_in wrong_user ArgumentError: wrong number of arguments (0 for 1)

下面是调用代码(在一个RSpec助手):

before(:each) do 
    wrong_user = Factory(:user, :email => "[email protected]", :password=>"hellohello", :password_confirmation => "hellohello") 
    integration_sign_in wrong_user 
end 

所以它明确地传递了一个论点。如果由于某种原因参数为空,是否会使它认为它不是一个参数?

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

可能相关的:在我spec_helper.rb我改成: config.use_transactional_fixtures = false(即使“真”有同样的问题)

任何想法?谢谢。 。

+0

我已经回答了下面的问题,但跟进:为什么堆栈跟踪这个错误?它使它大量混淆。该方法在spec_helper.rb文件中,其中堆栈无法达到(抓住吸管)? – skaz 2011-04-16 00:19:03

回答

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需要在水豚的一个参数,但它不在webrat。

+1

这是正确的,因为水豚不确定你想要点击什么按钮。 – 2011-04-16 00:23:20

0
integration_sign_in(wrong_user) 
+0

我也有这个 - 没有骰子。谢谢。 – skaz 2011-04-15 23:39:03