0

私は2つの_specファイルを持っています。最初のユニットテスト、もう1つは統合テストです。すべてが一緒に実行されているとRspecテストに失敗する

ファイル名を指定して実行している間は、 "rspec"として動作している間に緑色で表示され、3つは失敗しています。

私はdatabase_cleaner gemを使用して、各テストのまわりのテスト・データベースをクリーンアップしています。

config.use_transactional_fixtures = false 

    config.before(:suite) do 
    DatabaseCleaner.strategy = :transaction 
    DatabaseCleaner.clean_with(:truncation) 
    end 

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

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

私はオブジェクトをインスタンス化するために「let」を使用し、サンプルオブジェクトを作成するためにはFactoryGirlを使用しています。

誰もこれまでにこのような経験がありますか?

+0

これは、データベースがテスト間で正しくリセットされていないように私には聞こえます。正確な失敗が何であるかを確認することができます(つまり、コレクションのサイズをチェックして余分な要素がある場合) 。 テスト間で正当な競合が発生する可能性もあります。これは、失敗の内容と失敗が注文に依存するかどうかによって異なります。 – oowowaee

+0

@oowowaee私はdefからobjectをインスタンス化するletへ移動することで修正しました。今は期待どおりに動作しており、DatabaseCleanerの場合も同じです – matteoredz

答えて

1

いくつかの問題は次のようになります。あなたが変更とテストの間でリセットされていません

  • クラス変数。クラス変数は反パターンであり、一般的に避けるべきである。
  • あなたは定数のようなものを正しくスタブしていません。

テストの間に状態を維持するものは、表示されている問題を引き起こす可能性があります。各テスト中にデバッガを使用してオブジェクトの状態をチェックします。

+0

これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- i-do-代わりに)。 - [レビューの投稿](/レビュー/低品質の投稿/ 17574307) – rafalmp

0

私はdefからletに移動することで私の問題を解決しました。定義に注意してください

関連する問題