NoMethodError: неопределенный метод `mock 'с Mocha и Rails 3 - PullRequest
5 голосов
/ 30 сентября 2011

Я пытаюсь использовать mocha в своем проекте на Rails 3, но получаю следующее исключение:

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'

Вещи, которые я пробовал

  • Установка mocha 0.9.5 после прочтения 0.9.5-7 имела проблемы с этим.Вместо этого я получаю undefined method name исключение
  • Изменение места, где мне требуется mocha - в нижней части test_helper.rb, в верхней части теста и т. Д.
  • Попытка вызова mock () в консоли rails test - Iполучите то же исключение

Я рву на себе волосы этим.Любые идеи будут с благодарностью приняты.

1 Ответ

11 голосов
/ 30 сентября 2011

Я нашел ответ сразу после того, как опубликовал это.

Вот ответ: Мокка переносит в другой тест

Короче я поменял

gem 'mocha', '0.10.0'

до

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

и это сработало как шарм!

...