如何制作一个非常大的常量表供测试?

时间:2012-08-23 22:53:31

标签: ruby-on-rails-3 rspec

我的应用程序实际上是一个常量数据库表。它很大 - 它包含大约125K行的14个字段 - 重建它需要大约五分钟。

对于开发和生产工作,我重建作为播种数据库的一部分。但是对于测试,我不想每次运行测试时等待五分钟。

在这种情况下,您会建议使用哪种技术或工作流程? (一种方法可能是在测试期间将development_constant_table别名为test_constant_table,如果可能的话。)

更新

我应该提一下db / seeds.rb文件看起来像这样:

# file: db/seeds.rb
require "#{Rails.root}/db/time_dimension_loader"
TimeDimensionLoader.perform_lengthy_table_creation

1 个答案:

答案 0 :(得分:3)

好的,Tony Hopkinson指向stackoverflow.com/questions/1574797/的指针指明了方向。

首先,创建一个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:test:prepare运行后执行。所以是的,运行rake任务需要一段时间,但此后表存在(并且仍然存在),因此每次运行RSpec或自动测试时都不必重建表。