2017-05-18 4 views
1

Rails 4で複数の統合テストを実行するのが難しいです(これは現在、Rails 5のシステムテストと呼ばれています)。Rails統合テストが新しく始まらない

環境:Rails 4/Minitest/Capybara/PoltergeistがPumaサーバーで動作しています。

  1. 私は新しいレコードを作成し、単一のテスト、を実行すると、それは毎回に動作します。

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb -n /create_new/ 
    
  2. 私はテストの全体のセットを実行すると、レコードがすでに存在するため、上記のテストは毎回の作成に失敗しました。

    RAILS_ENV="test" ruby -I test test/integration/requests_test.rb 
    

私は開始時にputs Request.all.collect(&:name)を追加することで、これを確認した - グループを実行するとき、レコードがDBにすでに作成されています。

コアの問題はです。すべてのテストでDBが確実に新鮮ではありません。 (私の単体テストと機能テストはグループ単位で、また個人単位で新鮮です。)どのようにして自分のインテグレーションテストも毎回新しいものにすることができますか?

ENV['RAILS_ENV'] = 'test'を指定しても、上のコマンドは開発モードでPumaを実行しているようです。

答えて

0

database_cleaner gem(https://github.com/DatabaseCleaner/database_cleaner)をチェックしましたか? RailsHelper設定で新しい統合テストを実行するたびにデータベースをクリアすることができます。私は彼らのドキュメントをチェックアウトしたいと思いますが、私のように見えます:

DatabaseCleaner.strategy = :truncation 

RSpec.configure do |config| 
config.before(:each) do 
    DatabaseCleaner.clean 
end 

config.after(:each) do 
    FactoryGirl.reload #if you're using FactoryGirl 
end 
end 
+0

この回答の詳細を記入してください。それはなぜ機能するのですか?おそらくコードサンプルを提供します。良い回答を作成するには、[guidelines](https://stackoverflow.com/help/how-to-answer)を参照してください。 – Toby

関連する問題