Rails - 使用开发数据填充测试数据库

时间:2010-04-15 12:07:47

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

有没有什么简单的方法可以将数据从developmenet数据库复制到测试数据库中?我知道这是一种复制模式和重新创建数据库的方法,但是有没有任何rake任务用开发一个填充测试数据库?

6 个答案:

答案 0 :(得分:17)

您可以直接使用mysql:

mysqldump app_development | mysql app_test

答案 1 :(得分:15)

您可以使用:

rake db:test:clone

将开发数据库复制到测试中。

答案 2 :(得分:5)

对于所有数据库:

rake db:test:clone && rake db:seed RAILS_ENV='test'

答案 3 :(得分:4)

如果您只想完整地克隆开发数据库,​​那么只需复制development.sqlite3并将其重命名为test.sqlite3会出现什么问题?您可以通过设置可以从命令行运行的批处理文件(或其在操作系统上的等效文件)来自动执行该过程。

这将在本地工作,但我刚刚意识到你可能在想一个非本地环境,在这种情况下它可能不会。

答案 4 :(得分:3)

使用种子的另一种方法(db / seeds.rb)

首先,使用以下代码将一个rake任务添加到lib / tasks / test_seed.rake:

namespace :db do
  namespace :test do
    task :prepare => :environment do
        Rake::Task["db:seed"].invoke
    end
  end
end

然后,只要您通过迁移和种子更改数据库结构/内容,就可以运行

rake:db:test:prepare

复制架构和种子数据。

所以完整的步骤将是:

rake db:migrate
rake db:seed
rake db:test:prepare

答案 5 :(得分:3)

使用Postgres,像这样复制数据库:

  

使用TEMPLATE originaldb OWNER dbuser创建数据库newdb;