2013-10-30 38 views
0

我最近設置了Zeus和Minitest來測試Rails應用程序。Rails/Zeus:「MiniTest v5.0.8過時了」錯誤

但是,我得到了以下錯誤:

leo% zeus test 
/Users/leo/.rvm/gems/[email protected]/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/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/leo/.rvm/gems/[email protected]/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不是預期的,對嗎?

我從我的Gemfile中刪除了gem 'turn',運行bundle install,然後重新啓動Zeus。

現在,我得到:

/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/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
    from /Users/leo/.rvm/gems/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `block in require' 
    from /Users/leo/.rvm/gems/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `l 
... etc ... 

這是怎麼回事?我有沒有錯誤的Minitest版本?爲什麼Bundler無法找出依賴鏈,我認爲這是重點。

任何建議非常感謝。

回答

2

那麼出現立即解決被降級MINITEST:

gem 'minitest', '~> 4'

然而,這則似乎導致運行特定測試時的連鎖問題,因爲我現在越來越在實際運行uninitialized constant MiniTest::Test錯誤試驗。

更新:

看來老版本MINITEST的使用不同的模塊/類層次結構,所以Minitest::Test必須成爲MiniTest::Unit::TestCase

請注意Minitest> MiniTest的大小寫。

要查看類是提供給您的MINITEST/MINITEST,你可以使用:

MiniTest.constants.select {|c| Class === MiniTest.const_get(c)} 
相關問題