【问题标题】:NoMethodError: undefined method `mock' with Mocha and Rails 3NoMethodError:使用 Mocha 和 Rails 3 的未定义方法“模拟”
【发布时间】:2011-09-30 10:46:44
【问题描述】:

我正在尝试在我的 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

宝石文件

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() - 我得到同样的异常

我正在为此撕毁我的头发。任何想法都将不胜感激。

【问题讨论】:

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


    【解决方案1】:

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

    这是答案:Mocha Mock Carries To Another Test

    总之,我变了

    gem 'mocha', '0.10.0'

    gem 'mocha', '0.10.0', :require =&gt; false

    它就像一个魅力!

    【讨论】:

    • 但是,即使我加载了测试环境,我仍然无法在 Rails 控制台中使用mock() 而不会抱怨。烦人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多