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 : 仕様を分離して実行しようとしましたが、それらはすべて高速です。
注 II : ruby
「Activity Monitor」で特定のプロセスを実行すると (Snow Leopard 10.6.8 を実行している Mac OS X を使用しています)、CPU をすぐに 100% 使用するようになります。