【问题标题】:Clean way to add seeds data in Rails test environment在 Rails 测试环境中添加种子数据的干净方法
【发布时间】:2023-03-03 10:08:01
【问题描述】:

Rails 3 提供了一个种子.rb 来为生产环境加载最少的数据集。但是我无法在我的测试环境中正确加载这组数据。

我最终应用了这个答案How to load db:seed data into test database automatically?

setup :load_seeds

def load_seeds
  load "#{Rails.root}/db/seeds.rb"
end

问题是每次测试都会加载种子,而且速度很慢。另一个问题是,一旦测试运行,这些数据就会消失,因此 rails 控制台无法处理我的种子数据。

我计划稍后将我的种子数据迁移到固定装置,但我现在没有时间这样做。

我怎样才能只加载这个数据一次,然后使用这个种子数据运行我的测试?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    这是一个非常干净的答案:How do I load seed.rb within a Rails test environment using rpec? 你用rake RAILS_ENV=test db:seed

    【讨论】:

      【解决方案2】:
      • 在您的测试文件夹中创建一个“test_seed.rb”文件
      • 在“test_helper.rb”中需要你的 test_seed 文件
      • 将初始化(播种)和任何其他数据库范围的操作放在 test_seed.rb 中

      【讨论】:

      • 事实上我已经尝试过这种方法(但需要一个特定的测试种子文件,我使用了 rails 3.0 提供的seeds.rb)。不幸的是,种子会加载,但在完成任何测试后会立即被删除。稍后我会提供一个要点并编辑我的问题。
      【解决方案3】:

      将其放入您的 spec_helper 或等效项中:

      Rails.application.load_seed
      

      【讨论】:

        猜你喜欢
        • 2019-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 1970-01-01
        相关资源
        最近更新 更多