当我尝试在新的 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 个测试,因为只有规范,没有定义测试)
最佳答案
我最近遇到了一个类似的问题,并将其追溯到 rubygems 中的这个提交:
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/