1

Watir と RSpec を使用して Rails アプリケーションの統合テストを作成しています。各テストにまたがるデータベースにデータを設定する最良の方法は何ですか? たとえば、一連のテストで使用したい同じユーザーがいます。すべてのテストを実行する前にその共通データ (ユーザーなど) をシードし、次の一連のテストのためにクリーンアップするにはどうすればよいですか?

4

2 に答える 2

1

ジェフは、キュウリとチーズの本の「データベースの使用」の章でそれについて話していると思います。

于 2012-08-28T13:28:35.023 に答える
1

一般に、テスト用にグローバル データを使用することはお勧めできません。また、テスト内に依存関係が生じる可能性があります (これは常に悪い考えです)。これを回避するには、各テストで必要なデータを生成し、グローバルに挿入されたデータに依存しないようにする必要があります。

RSpecを使用している場合は、いくつかの作業が行われます (依存関係を避けるためにランダムな順序でテストを実行することさえあります)。テストを実行する前にデータベースのセーブポイントを作成し、テストによって行われたすべての変更をロールバックします。理想的には、これは、テストの実行前にテスト データベースが空であり、テストの実行後に空になることを意味します。

Rails では、Rails 独自のフィクスチャを使用して必要なデータをシードしたり、FactoryGirlなどのサードパーティの gem を使用したりできます。

繰り返しになりますが、グローバル データは作成しないでください。グローバル データはすべてのテストで使用されます。

于 2012-08-30T15:54:43.873 に答える