2

Scala で Play 2.0 フレームワークを使用して最初のプロジェクトを行っています。統合およびエンド ツー エンド テストの「GIVEN」セクションからテスト データを生成するための既存のベスト プラクティスまたはライブラリが 1 つ (または複数) 存在するかどうか疑問に思っています。

たとえば、Rails の世界では、GIVEN there are 10 users who like chocolate内部で FactoryGirl または同様のライブラリを使用してデータベースにモデルを生成する cucumber step がある場合があります。その後、テスト実行の間にテスト データベースが自動的に空になり、実際のアプリケーションとは異なるデータベース インスタンスでテストが実行されることを期待できます。

Play 2.0 を使用する Scala の世界では、MySQL で Anorm を使用することを検討しています。メモリ内データベースを使用するテストを特別にケース化して (それをクリアして)、GIVEN ブロックでケース クラスを作成して保持するだけのコードを作成する必要がありますか?

同じように、Play の「進化」が自動的に実行されて、テスト用インメモリ データベースにプロダクション スキーマが生成されますか?

ここで車輪の再発明を避けるために助けてくれてありがとう。

4

1 に答える 1

2

この質問をして以来、次のワークフローに落ち着きました。

  • モデルのケース クラスで ScalaQuery 0.10.0-M1 を使用する
  • FakeApplication単体テストおよび機能テスト用のインメモリ データベースでの使用
  • 統合およびエンドツーエンドのテストに実際のローカル MySQL データベースを使用する
  • この質問で提案されているように、各 GIVEN のモデルを保持しています。
    • 単体テストと機能テストの場合、H2 インメモリ データベースを使用すると、各テストに新しい DB が作成されます。これは優れて高速で、他のテストから分離されており、クリーンアップは必要ありません。
    • 統合およびエンド ツー エンドのテストでは、ローカルの MySQL データベースを使用して、テストは DB を共有します。現在、テストが互いに影響しないように、GIVEN ごとにランダム化されたデータを使用しており、定期的にローカル データベースをクリアしています。

このプロセスは、これまでのところかなりうまく機能しており、他の StackOverflow の質問の主題であるいくつかの落とし穴があります ( todo: これらの質問へのリンクはこちら) 。

上記の私の質問への回答:はい、メモリ内データベースが起動されるたびに進化が実行されます。

于 2012-07-02T14:28:47.850 に答える