【问题标题】:In rails 3, how can I ensure enum tables are loaded into the test database before models load?在 rails 3 中,如何确保在加载模型之前将枚举表加载到测试数据库中?
【发布时间】:2011-01-26 17:10:37
【问题描述】:

使用 ActiveSupport::TestCase。我认为那是旧的 Test::Unit。

我有几个代表枚举值的表。这些永远不会改变,我想在活动记录查找器的类范围内使用它们的数据。

这会导致测试出现问题,因为模型类在固定装置和固定装置在测试之间回滚之前加载。我无法将枚举表复制到夹具中,因为模型加载时数据尚未加载。

有没有办法在模型加载之前和夹具事务开始之前使测试数据库进入初始状态?

【问题讨论】:

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


    【解决方案1】:

    为您的测试定义一个设置方法怎么样?

    或者使用 db/seeds.rb 为数据库播种?

    【讨论】:

    • db/seeds.rb 在运行测试时似乎没有加载。如果我手动加载它,它会在测试开始时被删除。我在哪里可以连接到测试设置来为数据库播种?在每次测试之前运行的正常设置将不起作用。它需要在所有测试之前运行一次。
    • 关于播种,请参阅此处的讨论:stackoverflow.com/questions/1898782/…。特别是检查 cmets。
    【解决方案2】:

    如果它们永远不会改变,您可以将 create 语句直接放入迁移中,以便在重建表时创建它们 - 老实说似乎有点乱,但应该可以工作。

    【讨论】:

    • 不运行迁移以开始测试运行。测试模式是从生成的文件 db/schema.rb 创建的。想一想,我在测试中对 db 视图有同样的问题,因为视图没有克隆到 db/schema.rb。如果我可以设置 db/schema.rb 的内容,我可以解决这两个问题,但也许有更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多