我在jruby-1.7.13中从测试单元切换到MiniTest。我也使用mocha / integration。我的问题是运行' rake test'调出Mocha :: ExpectationError:意外调用:MyClass.new。使用MyClass.new,在lib文件夹中定义一个类,并在测试类中使用。我发现单独运行测试工作得很好。它看起来像是时间或序列问题。我尝试通过使用setup / teardown在每次单个测试之前启动MyClass.new来规避它,但这没有用。我是否必须模拟/存根MyClass.new?
答案 0 :(得分:0)
假设您使用的是Rails 4,则需要将以下内容添加到config/application.rb
:
config.autoload_paths += %W(#{config.root}/lib)
杀死Spring / Zeus / Spork,重新运行测试,它应该可以工作。
答案 1 :(得分:0)
helper.rb示例代码......
require 'rubygems'
require 'bundler'
begin
Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
$stderr.puts e.message
$stderr.puts "Run `bundle install` to install missing gems"
exit e.status_code
end
require 'minitest/spec'
require 'minitest/autorun'
require 'mocha/integration'
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'dibta-modbus-adapter'
require 'dibta-interface'
class MiniTest::Test
def test_order
:alpha
end
def self.runnable_methods
methods = methods_matching(/^test_/)
case self.test_order
when :random, :parallel then
max = methods.size
methods.sort.sort_by { rand max }
when :alpha, :sorted then
methods.sort ## note: Runnable is shuffeled in minitest.rb
else
raise "Unknown test_order: #{self.test_order.inspect}"
end
end
end
如你所见,我开始修改test_order和runnable_methods ....
取决于测试失败的种子“数量”。在某些情况下(使用特殊的种子编号),测试甚至可以通过。