【问题标题】:Rails 2.3.2 unit test passes when run with normal ruby, fails when run with rake test:unitsRails 2.3.2 单元测试在使用普通 ruby​​ 运行时通过,在使用 rake test:units 运行时失败
【发布时间】:2009-06-10 21:15:35
【问题描述】:

在单元测试中创建记录时,我在使用 rake test:units 运行时收到“ActiveRecord::RecordInvalid”。当我使用 ruby​​ ('ruby unit/blah_test.rb') 手动运行单元测试时,我没有收到此错误。我已将问题缩小到模型中存在的验证。这是一个包含验证,实际上是针对不同的模型执行查找以获取有效值。我认为这与未及时加载的固定装置有关,但我的 test_helper.rb 中确实有“固定装置:所有”(我也尝试在单元测试本身中包含“固定装置:全部”。

有人对我如何进一步缩小范围有任何建议吗?

谢谢。

【问题讨论】:

    标签: ruby-on-rails unit-testing testing


    【解决方案1】:

    当然,您所看到的与缺少的固定装置相符。使用rake test:units 将设置(并清除)测试数据库模式,因此您包含的模型的固定装置可能不会被填充。通过直接调用,您将使用上次离开它的状态的测试数据库,它可能确实包含所包含模型的固定器。

    在测试类中是否有另一个对fixtures 的调用可能导致fixtures :all 无法启动?

    在通过 ruby​​ 运行测试之前,您可以尝试执行 rake db:test:prepare,这意味着您正在新的测试数据库上运行。如果没有为您包含的模型加载固定装置,这将进一步突出显示。

    【讨论】:

    • 运行 db:test:prepare 后,通过普通 ruby​​ 运行我的测试会发出与通过 rake 运行它们相同的输出。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多