我正在使用 Ruby on Rails 3.2.2、FactoryGirl 3.1.0、FactoryGirlRails 3.1.0、Rspec 2.9.0 和 RspecRails 2.9.0。在我的规范文件(每个文件大约 1300 个示例)中,在每个示例运行之前,我为数据库播种并使用工厂创建和存储少量记录:
# spec/spec_helper.rb
config.before(:suite) do
# Cleans the database.
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
# Seeds the database.
load "#{Rails.root}/db/seeds.rb"
end
我想知道为什么,当我rspec ./spec/models/my_model_spec.rb
在终端窗口中运行命令时,我的规范开始快速运行,但经过一段时间(即运行了大约 300 个示例之后),这些运行缓慢。我的示例非常简单,在性能方面几乎相同:
it "can not update title" do
@article.update_attribute(:title, "Sample title").should be_false
end
经过一定数量的测试后,上述示例需要 20/30 秒才能完成(!),有时也需要 60/120 秒(!!!)。
如果这些示例非常简单并且在性能方面几乎相同,那么在运行大约 300 个示例会减慢我的规范之后会发生什么?这种行为有原因吗?
注意 I:我尝试单独运行规范,这些都很快。
注二:当我ruby
在我的“活动监视器”中运行规范时(我使用的是运行 Snow Leopard 10.6.8 的 Mac OS X)快速使用 100% 的 CPU。