Я довольно новичок в Ruby / Ruby on Rails, и у меня возникают проблемы с добавлением метода через mocha
в существующую кодовую базу.
Я упростил код до MWE, где это ломается.
Вот test_helper.rb
:
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require "rails/test_help"
class ActiveSupport::TestCase
end
class Minitest::Test
def before_setup
end
end
А вот и тест:
require 'test_helper'
require 'mocha/minitest'
class MyTest < ActionMailer::TestCase
describe "some test" do
it "should stub" do
My::Class.stubs(:bar).returns("foo")
puts My::Class.bar
end
end
end
Это приводит к следующей ошибке при запуске теста:
Mocha::NotInitializedError: Mocha methods cannot be used outside the context of a test
Однако, когда я переопределяю свой test_helper.rb
следующим образом:
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require "rails/test_help"
class ActiveSupport::TestCase
end
# class Minitest::Test
# def before_setup
#
# end
# end
Тест успешно пройден (и «foo» печатается как положено).
Почему class Minitest::Test...end
в test_helper.rb
вызывает первую ошибку? Я не могу удалить этот код из фактической базы кода, так как я могу изменить его для работы с mocha
?
Ruby версия: 2.4.1
Версия Rails: 4.2.8
Мокко версия: 1.5.0