Rails rake测试返回错误消息

时间:2010-01-06 00:00:42

标签: ruby-on-rails testing

我是一名铁杆新手,当我进行rake测试时会收到以下消息。这是一个基于rails社区引擎的应用程序。

我尝试创建一个测试应用程序,以确保我的宝石等都很好,并且我能够在该应用程序中成功运行rake测试。

如果有人可以了解出了什么问题,那将会很棒......

  /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:in `method_missing': undefined method `merge' for nil:NilClass (NoMethodError)
  from /home/eakkas/NetBeansProjects/hello_ce/vendor/plugins/community_engine/app/controllers/users_controller.rb:17
  from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
  from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:158:in `require_without_desert'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:8:in `require'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:32:in `__each_matching_file'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/ruby/object.rb:7:in `require'
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:265:in `require_or_load'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:27:in `depend_on'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:26:in `each'
  from /usr/lib/ruby/gems/1.8/gems/desert-0.5.3/lib/desert/rails/dependencies.rb:26:in `depend_on'
  from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:136:in `require_dependency'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:414:in `load_application_classes'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `each'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `load_application_classes'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `each'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `load_application_classes'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:197:in `process'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send'
  from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run'

4 个答案:

答案 0 :(得分:1)

错误永远不足以完全消除信息。但是,这么简单的事情,你已经运行sudo rake gems:install吗?

我也看到下面这一行

app/controllers/users_controller.rb line 17

我们需要看看你的控制器。

如果您只使用rake会发生什么?

答案 1 :(得分:0)

我知道这已经开放了一段时间......

我知道CE目前不兼容Rails 2.3.5(最大支持Rails版本是2.3.4)。也许这就是问题?

答案 2 :(得分:0)

看起来你正试图在零上调用“merge”。

您必须包含users_controller中的行,以便让我们知道代码在此处执行的操作。 可能你有类似的东西:

params[:widget].merge(some_hash)

即使params [:widget]为空(即没有发送参数),你也会调用它。如果是这种情况,那么您只需要这样做:

(params[:widget] || {}).merge(some_hash)

答案 3 :(得分:0)

在用户控制器的第17行,您将拥有类似@ some_variable.do_something

的内容

问题是@some_variable是一个名为Nil的类的实例(对象),它没有.do_something方法。

这行代码最有可能期待User类的一个实例,因为看起来你正在使用社区引擎插件我会说你最有可能让某些东西通过用户控制器而没有有效的用户。

看看控制器,看看它有什么期望,然后确保你做任何必要的事情,以满足它的需要。根据您提供的信息,遗憾的是,您无法更好地了解解决问题需要做些什么