1

我使用以下方法安装了 Mocha 0.9.7 Rails 插件:

$ script/plugin install git://github.com/floehopper/mocha.git

(只需按照http://mocha.rubyforge.org/中的说明进行操作)

然后,我在功能测试中定义了以下设置

def setup
  @controller.expects(:logged_in?).returns(true)
  @controller.expects(:admin_user?).returns(true)
end

运行测试会生成 ff。错误:

NameError: uninitialized constant Mocha::Mockery::ImpersonatingName
    /test/functional/xxxx_controller_test.rb:x:in `setup'

在此之前,我看到了ff。测试日志顶部的错误:

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.3/lib/active_support/test_case.rb:12: warning: already initialized constant Mocha

这让我相信我在 Ruby 或 Rails 路径中的某个地方有一个旧版本的 Mocha。问题是我找不到。

我的猜测正确吗?如果是这样,这个旧版本的摩卡在哪里?或者,我怎样才能知道它在哪里?

4

1 回答 1

1

根据http://selfamusementpark.com/blog/2009/07/30/rails233mochaconfusion/,我的猜测是不正确的。问题确实是 Mocha 是在测试框架之前加载的,这不是前者所期望的。解决方法是编辑 RAILS_ROOT/vendor/plugin/mocha/init.rb 注释掉ff。线:

require 'mocha'

然后,必须在测试文件或助手中明确要求 Mocha,以确保预先加载了测试框架。

于 2009-08-17T16:35:34.540 回答