我使用:
安装了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。问题是我找不到它。
我的猜测是否正确?如果是这样,这个旧版的摩卡在哪里?或者,我怎样才能找到它的位置?
答案 0 :(得分:1)
根据http://selfamusementpark.com/blog/2009/07/30/rails233mochaconfusion/,我的猜测不正确。问题实际上是在测试框架之前加载了Mocha,这不是前者所期望的。解决方案是编辑RAILS_ROOT / vendor / plugin / mocha / init.rb以注释掉ff。行:
require 'mocha'
然后,必须在测试文件或帮助程序中明确要求Mocha,以确保预先加载测试框架。