为了账号安全,请及时绑定邮箱和手机立即绑定

如何自动将db:seed数据加载到测试数据库中?

如何自动将db:seed数据加载到测试数据库中?

拉风的咖菲猫 2019-12-13 09:25:11
我正在尝试使用新的标准方法在db:seedrake 2.3.4+中加载种子数据,这是rake任务。我正在加载常量数据,这是我的应用程序真正正常运行所必需的。使db:seed任务在测试之前运行的最佳方法是什么,以便预先填充数据?
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

我说应该


namespace :db do

  namespace :test do

    task :prepare => :environment do

      Rake::Task["db:seed"].invoke

    end

  end

end

因为如果您有config.active_record.schema_format =:sql,则不会执行db:test:load(db:test:clone_structure是)


查看完整回答
反对 回复 2019-12-13
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以用来Rails.application.load_seed将种子数据加载到测试环境中。但是,何时以及何时加载此数据取决于以下几件事:


使用Minitest

在进行所有测试之前,没有一种方便的方法可以运行一次此文件(请参阅此Github问题)。您需要在每次测试之前加载一次数据,这很可能是在测试文件的设置方法中进行的:


# test/models/my_model_test.rb

class LevelTest < ActiveSupport::TestCase


  def setup

    Rails.application.load_seed

  end


  # tests here...


end

使用RSpec

使用RSpec的before(:all)方法为该模型的所有测试加载种子数据:


describe MyModel do

  before(:all) do

  Rails.application.load_seed

end


describe "my model..." do

  # your tests here

end

希望这可以帮助。


查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 783 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信