【问题标题】:Rails Testing Error - NameError: TestCase::SUPPORTS_INFO_SIGNALRails 测试错误 - NameError: TestCase::SUPPORTS_INFO_SIGNAL
【发布时间】:2014-01-21 07:53:32
【问题描述】:

在我的 Rails 应用程序中,我已将 Ruby 从 1.9.3 更新为 2.1.0。现在,当我重新启动测试时,出现错误:

NameError: uninitialized constant MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL

这里是Gemfile 中的宝石:

gem 'rails'
gem 'mysql2'
gem 'json'
gem 'jquery-rails'
gem 'kaminari'
gem 'therubyracer'
gem 'devise'
gem 'rak'
gem 'rails-translate-routes'
gem 'routes'

group :assets do
  gem 'sass-rails', " ~> 3.2.3"
  gem 'uglifier', ' >= 1.0.3'
end

group :development, :test do
  gem 'factory_girl_rails'
end

group :test do
  gem 'shoulda'
  gem 'database_cleaner'
  gem 'capybara'
end

这是堆栈跟踪:

`NameError: uninitialized constant MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
~/.rvm/gems/ruby-2.1.0@kalender/gems/mocha-0.10.5/lib/mocha/integration/mini_test/version_230_to_262.rb:19:in `run'`
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit/testcase.rb:17:in `run'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/testing/setup_and_teardown.rb:36:in `block in run'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:425:in `_run__4401979439353622961__setup__4295356768171603498__callbacks'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:385:in `_run_setup_callbacks'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks'
~/.rvm/gems/ruby-2.1.0@kalender/gems/activesupport-3.2.12/lib/active_support/testing/setup_and_teardown.rb:35:in `run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:940:in `block in _run_suite'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:933:in `map'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:933:in `_run_suite'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:663:in `block in _run_suites'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:661:in `each'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:661:in `_run_suites'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:884:in `_run_anything'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:1092:in `run_tests'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:1079:in `block in _run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:1078:in `each'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:1078:in `_run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/minitest/unit.rb:1066:in `run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:27:in `run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:780:in `run'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:372:in `block (2 levels) in autorun'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:33:in `run_once'
~/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/test/unit.rb:371:in `block in autorun'

【问题讨论】:

  • 它适用于 ruby​​ 1.9.3 和 ruby​​-2.0.0-p481

标签: ruby-on-rails-3 unit-testing testing minitest ruby-2.1


【解决方案1】:

我刚刚遇到了一个与此类似或相同的错误,并且能够在本地解决它。对我来说,我有一个开头的痕迹:

/home/youruser/.rvm/gems/ruby-2.1.0/gems/mocha-0.10.5/lib/mocha/integration/mini_test/version_230_to_262.rb:19:in `run': uninitialized constant MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL (NameError)

这表明当 mocha 尝试引用一个常量时,错误实际上是在 mocha 中发生的,该常量已从可能与您的 Ruby 升级一起出现的 minitest 版本中删除。

对我来说,bundle update mocha 解决了这个问题。

做了一些代码探索以明确问题的解决位置,我在 mocha 存储库的克隆副本上使用了“git pickaxe”(git log -SSUPPORTS_INFO_SIGNAL),看起来像this commit removed the reference to SUPPORTS_INFO_SIGNAL,所以使用在 mocha 中提交之后的任何内容都应该没问题。

如果升级您的 mocha 版本不能解决问题,请仔细查看堆栈跟踪,您应该会看到哪个依赖 minitest 并定义了 SUPPORTS_INFO_SIGNAL 的库导致了错误。然后在该依赖项中查看上游以查看此问题是否已解决。如果没有,请 fork 你正在使用的表现出这种行为的依赖项并将你自己的补丁推送到上游。

【讨论】:

  • 不幸的是它对我不起作用,我安装了最新版本的迷你测试和摩卡
  • @pukoo 你能提供完整的堆栈跟踪吗?
  • 在 Github/minitest 上报告问题后,zenspider 建议使用最新的 mocha gem,因为它是一个“mocha”错误。 在我的例子中,我没有直接在我的 Gemfile 中使用“mocha”。 但是另一个 Gem 'capybara' 依赖于 mocha。 我也在我的 Gemfile 中声明了“mocha”Gem,它可以工作。
猜你喜欢
  • 1970-01-01
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多