ruby-on-rails:播种数据策略(或将测试数据加载到开发人员数据库中)

cbr*_*lak 3 testing ruby-on-rails fixtures seeding

我想经常清理并重新加载我的开发人员数据库(Ruby on rails).

当然,我可以通过网页手动添加数据,但我想知道是否有人有这种类型的测试策略.

(我已经有单元,功能和集成测试,fyi)

谢谢

Har*_*tty 6

seed.ymldb目录中创建一个文件.为要创建的每个模型添加YAML文档.该文档应包含哈希列表.每个哈希应包含模型属性.

  users:
      -   login: jake
          password: jake123
          password_confirmation: jake123
          first_name: Jake
          last_name: Driver

      -   login: Jane
          password: jane123
          password_confirmation: jane123
          first_name: Jane
          last_name: McCain

  categories:

  products:
Run Code Online (Sandbox Code Playgroud)

在seed.rb文件中

seed_file = File.join(Rails.root, 'db', 'seed.yml')
config = YAML::load_file(seed_file)
User.transaction do 
  config.keys.each{ |key| key.classify.constantize.create(config[key]) }
end
Run Code Online (Sandbox Code Playgroud)

我发现修改YML文件中的种子数据更容易.我构建的应用程序由不同的团队部署.他们也喜欢这种方法.

要清除数据,我在lib\tasks目录中有一个rake任务.我将rake任务作为app:flush.

namespace :app do
  desc "Flush all the seed data "
  task :flush => :environment do
    config = YAML::load_file(File.join(Rails.root, 'db', 'seed.yml'))
    User.transaction do 
      config.keys.each{ |table| truncate_table(table)}
    end
  end
end
Run Code Online (Sandbox Code Playgroud)