如何为我的rspec测试加速创建5,000条记录?

use*_*882 9 ruby testing rspec ruby-on-rails ruby-on-rails-3

我使用Ruby on Rails 3.2.2,FactoryGirl 3.1.0,FactoryGirlRails 3.1.0,Rspec 2.9.0和RspecRails 2.9.0.为了测试我的应用程序,我必须在数据库中创建大量记录(大约5000个),但该操作非常慢(创建记录需要10分钟以上).我这样做:

before(:each) do
  5000.times do
    FactoryGirl.create(:article,)
  end
end
Run Code Online (Sandbox Code Playgroud)

如何改进我的规范代码以便更快?

注意:在每篇文章创建过程之前和之后运行的文章回调可能会导致缓慢,但我可以跳过那些(因为我必须测试的唯一内容是文章而不是关联的模型),如果那些记录的创建缓慢......是否有可能做到这一点,是否是正确的方法?

Ism*_*reu 0

我不是测试方面的专家,但我认为 FactoryGirl 不应该有这种用途。应该只是创建一些记录。

想一想,如果真的需要这么多记录进行测试,如果需要,是否需要在每次测试前“重置”它们?(是的,您在每次测试之前创建它们,因此您实际上创建了 5000*number_of_tests 记录)。原始sql脚本不是一个选择吗?因此,当您的测试数据库创建时,所有这些记录也会创建。