在单元测试中创建记录时,当它与 rake test:units 一起运行时,我得到一个“ActiveRecord::RecordInvalid”。当我使用 ruby ('ruby unit/blah_test.rb') 手动运行单元测试时,我没有收到此错误。我已将问题缩小到模型中存在的验证。这是一个包含验证,它实际上是针对不同的模型执行查找以获得有效值。我认为这与没有及时加载的固定装置有关,但我的 test_helper.rb 中确实有“fixtures:all”(我也尝试在单元测试本身中包含“fixtures:all”。
有人对我如何尝试进一步缩小范围有任何建议吗?
谢谢。
最佳答案
当然,您所看到的与缺少的固定装置相吻合。使用 rake test:units
将设置(并清除)测试数据库模式,因此您包含的模型的固定装置可能不会被填充。通过直接调用,您将使用上次离开时的状态的测试数据库,其中可能确实包含所包含模型的修复程序。
在测试类中是否有另一个调用 fixtures
可能导致 fixtures :all
不启动?
在通过 ruby 运行测试之前,您可以尝试执行 rake db:test:prepare
,这意味着您在新的测试数据库上运行。如果没有为您包含的模型加载灯具,这将进一步突出显示。
关于ruby-on-rails - Rails 2.3.2 单元测试在使用普通 ruby 运行时通过,在使用 rake 测试 :units 运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/978191/