私は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:私はスペックを実行すると、私の「アクティビティモニタ」(私はSnow Leopardの10.6.8を実行しているのMac OS Xを使用しています)でruby
プロセスはすぐにCPUの100%を使用して行きます。
は孤立して遅い例を実行してみてください、そして、彼らは、低速/高速化/同実行する場合参照してください。これらの仕様はちょうど遅くなる可能性があります。 –
@Andrew Marshall - 私は孤立して仕様を実行しようとしましたが、それらはすべて高速です*。 – Backo
テストでメモリがリークしていて、スワップを開始しますか? –