我最近设置了Zeus和Minitest来测试Rails应用程序。
但是,我收到以下错误:
leo% zeus test
/Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/turn-0.9.6/lib/turn/minitest.rb:23:in `<top (required)>': MiniTest v5.0.8 is out of date.
`gem install minitest` and add `gem 'minitest' to you test helper. (RuntimeError)
from /Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
from /Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `block in require'
... etc ...
转弯宝石中提到的行是:
# set MiniTest's runner to Turn::MiniRunner instance
if MiniTest::Unit.respond_to?(:runner=)
MiniTest::Unit.runner = Turn::MiniRunner.new
else
raise "MiniTest v#{MiniTest::Unit::VERSION} is out of date.n"
"`gem install minitest` and add `gem 'minitest' to you test helper."
#MiniTest::Unit = Turn::MiniRunner
end
因此,"过时"可能有点误导。它的真正含义是 API 不是预期的,对吧?
我从我的宝石文件中删除了gem 'turn'
,运行bundle install
,然后重新启动宙斯。
现在我得到:
/Users/leo/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:328:in `autorun': uninitialized class variable @@installed_at_exit in Test::Unit::Runner (NameError)
from /Users/leo/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/test/unit.rb:640:in `<top (required)>'
from /Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require'
from /Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/leo/.rvm/gems/ruby-1.9.3-p125@backscratchers/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `l
... etc ...
这是怎么回事?我是否以某种方式拥有错误的迷你测试版本?为什么 Bundler 无法弄清楚依赖链,我认为这就是重点。
任何建议都非常感谢。
那么直接的解决方案似乎是降级 Minitest:
gem 'minitest', '~> 4'
会导致连锁问题,因为我现在在实际运行测试时遇到uninitialized constant MiniTest::Test
错误。
更新:
似乎旧版本的 MiniTest 使用了不同的模块/类层次结构,因此Minitest::Test
必须变得MiniTest::Unit::TestCase
。
请注意 Minitest> MiniTest 的大写。
要查看您的迷你测试/迷你测试可用的课程,您可以使用:
MiniTest.constants.select {|c| Class === MiniTest.const_get(c)}