2012-02-29 3 views
0

私はRails 3.1アプリを維持しています。 App dbには50以上のテーブルがあり、そのうちの30個がアプリが正常に機能するためのシードデータが必要です。多くの種データを持つRailsアプリケーションのテスト

アプリケーションには統計データ(シードデータとして)が豊富にあり、一部のテーブルには150,000を超えるレコードが含まれています。私は器具を使用してテストしています(実際にはrakeタスクを使用してdev-dbからフィクスチャファイルを作成しています)。巨大なフィクスチャファイルのため、テストは遅くなり、遅くなりました。テストスイート全体を実行するのに20分以上かかることがあります。

私がテストを開始した時点で、備品は行く道でした。現在、私はもはやそれほど確信していません。私はfactory_girl、capybara、rspec、sporkのようなツールについて読んでいます。私はそれらでいくつかのテストを行っており、彼らはうまく使えるように見えます。

基本的に、私はこの種の設定をどのようにテストしたいですか?

備品が遅すぎます。助けてくれてありがとう!

答えて

1

まあ、あなたのような巨大なアプリケーションでは、テストスイートも非常に長く実行されているはずです。ここで最大の改善点は、データベース内のテストデータを少なくすることだと思います。
アソシエーションをテストすることも、db関連のテストを行うこともできますが、たとえばモデル機能をテストするときは、#saveメソッドに疑似期待値を設定し、コードが@attributesに変更されていることを確認してください。私は、データベースに対してすべてをテストすることは冗長だと思う。すでに完全にテスト済みであるため、テスト対象(データベースに保存するときに行う)としてレールスタックを含める必要はありません。

+0

答えてくれてありがとう!私は、治具を完全に取り除き、シードデータのみのdbをもう一度テストすることを考えています。私はdatabase_cleaner gemを使って特定のテーブル(シードデータのものではない)をクリーンアップして、各テストのための新しいスタートをつけたいと思っています。このアプローチのアイデアは? – hade

+0

申し訳ありませんが、私はあなたにテスト環境でのデータベースのクリーニングに関するお勧めはできません。私のテストではデータベースを使用していないので、そのような戦略はわかりません。 – farnoy

関連する問題