NoMethodError:使用Mocha和Rails 3的未定义方法`mock'

时间:2011-09-30 10:46:45

标签: ruby-on-rails-3 testing mocking mocha

我正在尝试在我的Rails 3项目中使用mocha但是仍然遇到以下异常:

NoMethodError: undefined method `mock' for #<MochaTest:0x00000101f434e8>
    /Users/John/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.10/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing'
    test/functional/mocha_test.rb:7:in `block in <class:MochaTest>'

测试

我写过最简单的测试:

require 'test_helper'

class MochaTest < ActionController::TestCase
  test "test mocha" do
    order = mock('order')
  end
end

我使用ruby -Itest test/functional/mocha_test.rb

运行它

我已经尝试了rake test并且它提供了完全相同的异常。

test_helper.rb中

ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'

class ActiveSupport::TestCase
  #....
  require 'test/unit'
  require 'mocha' 
end

的Gemfile

source 'http://rubygems.org'

gem 'rails', '3.0.10'
gem 'sqlite3'
gem 'devise', '1.4.5'
gem 'activemerchant'
gem 'geo_location'
gem 'nokogiri'
gem "nifty-generators", :group => :development
gem 'mocha', '0.10.0'

我尝试过的事情

  • 在阅读0.9.5-7后安装mocha 0.9.5存在问题。我得到undefined method name例外
  • 改变我需要mocha的地方 - 在test_helper.rb的底部,测试顶部等。
  • 尝试在rails控制台测试中调用mock() - 我得到了相同的异常
我正用这个撕掉我的头发。任何想法都会感激不尽。

1 个答案:

答案 0 :(得分:11)

我发布这个后立即找到了答案。

以下是答案:Mocha Mock Carries To Another Test

简而言之,我改变了

gem 'mocha', '0.10.0'

gem 'mocha', '0.10.0', :require => false

它就像一个魅力!