2012-05-08 4 views
0

私は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%を使用して行きます。

+1

は孤立して遅い例を実行してみてください、そして、彼らは、低速/高速化/同実行する場合参照してください。これらの仕様はちょうど遅くなる可能性があります。 –

+0

@Andrew Marshall - 私は孤立して仕様を実行しようとしましたが、それらはすべて高速です*。 – Backo

+1

テストでメモリがリークしていて、スワップを開始しますか? –

答えて

0

すべての例の後にデータベースをクリーニングしてみてください。あなたのrspec_helper configureコンブロックでこれを入れて:

config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
+0

それは違いがないようです。遅くなります。 – Backo

関連する問題