ruby-on-rails - 未初始化的常量 Test::Unit::TestResult::TestResultFailureSupport

标签 ruby-on-rails unit-testing testing rspec shoulda

当我尝试在新的 Rails 项目中运行规范或生成器时,我在 subj 中遇到错误。

当我添加 shoulda 时会发生这种情况。

我在 config/environment.rb 中添加了以下内容:

config.gem 'rspec', :version => '1.2.6', :lib => false
config.gem 'rspec-rails', :version => '1.2.6', :lib => false
config.gem "thoughtbot-shoulda", :version => "2.10.2", :lib => 'shoulda', :source => "http://gems.github.com"

我在 OSX 上。

  • ruby 1.8.6(2008-08-11 补丁级别 287)
  • gem 1.3.5
  • rails 2.3.4
  • rspec - 1.2.6
  • 应该 - 2.10.2
  • 测试单元 - 2.0.3

我知道 this并添加 config.gem 'test-unit', :lib => 'test/unit' 确实解决了生成器问题,因为它不会抛出异常,但它会打印 0 测试, 0 个断言,0 个失败,0 个错误,0 个未决,0 个遗漏,0 个通知 在运行结束时,所以我想它会尝试运行意外和不需要的测试,而且规范完全停止运行,似乎 rspec 根本没有运行,当运行 rake spec 时,我再次得到测试单元输出(有 0 个测试,因为只有规范,没有定义测试)

最佳答案

我最近遇到了一个类似的问题,并将其追溯到 ruby​​gems 中的这个提交:

http://github.com/vvs/rubygems/commit/cbb4b07d491dd49b8dff8ab7af706dde31307c7d

如果 'test-unit' gem 存在,它会加载它,如果不存在,它会静静地继续前进。此更改的作者可能没有意识到一个基本事实 - 激活一个 gem 通常会改变加载到系统中的其他 gem 的行为。应用程序开发人员应该负责定义他们想要激活的 gem 集; rubygems 系统本身决定有选择地加载 gem 是一个令人头疼的问题。

这个问题的另一半是测试单元 gem 干扰 rspec 的原因。这个我无法回答,但我确实追踪到没有 ExampleGroups 被注册的事实,这反过来是由于当 Rspec 动态创建 ActiveSupport 的新子类时,ExampleGroupMethods 中的“继承”回调没有被调用: :TestCase(这发生在 ExampleGroupMethods#subclass 中)

关于ruby-on-rails - 未初始化的常量 Test::Unit::TestResult::TestResultFailureSupport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520004/

相关文章:

testing - iTunes Connect Testflight 内部测试人员

mysql - rails 5 mysql 适配器问题

html - 在 html 表中动态显示哈希数组?

ruby-on-rails - unicorn启动时Rails生产环境 "uninitialized constant (NameError)"错误

javascript - 如何在 AngularJS 测试中将 DOM 更改与模型同步

flutter - 如何比较 flutter 单元测试的期望函数中的两个列表?

ruby-on-rails - 如何从 Rails 模型中删除列?

mysql - 在 node.js 上单元测试 mysql 回滚

c# - 如何使用 NUnit 测试回调

unit-testing - Golang使用动态函数调用模拟函数