2011-07-08 3 views
28

私はSymfony2を使い始めており、アプリケーションのモデルレイヤーの自動テストを設定しようとしています。 Symfony2の本はコントローラの単体テストについて語っていますが、モデルテストの例はたくさんありません。PHPUnitでテストする際にDoctrine2のフィクスチャを設定するには?

私は、各テストの実行前に動作するように設定され、クリーンデータを持っていると思いますし、見つかったこれらの記事:

sznapka.pl記事Iに基づいて、実際にエラーなしでテストを実行しますが、テストスキーマは作成されますが、フィクスチャはロードされません。私はなぜ、またはこれをデバッグする方法を見ることができません。

背景:私は以前、CakePHPでフィクスチャの読み込みが主に自動的に処理されていましたが、Symfony/Doctrineには間違ったアプローチがありますか?

+0

(この質問を放棄することについて罪悪感を感じ始めています)Symfonyの調査から他のプロジェクトに移行しなくてはなりませんが、すぐに復帰することを願っています。現時点での私の気持ちは、以下のjulesで示唆されているように、Symfonyのより軽いアプローチがより適切であるということです。たとえば、パーシスタンス層をテストする必要はなく、オブジェクトグラフのエッジの周りを常にテストしようとする必要があります。 – contrebis

答えて

6

はいDoctrineFixturesは良い選択です。

モデルをテストするには:実際にデータベースにフィクスチャをロードする必要はありません。必要なデータを持つオブジェクトを作成する必要があります(セッターを挿入する)。コントローラテストする

負荷教義器具およびdoctrine transactionsを使用するので、データベースの状態は、各テストケースの前に同じである、tearDow()setUp()とロールバックでトランザクションを開始します。 (コントローラがトランザクションを使用していても、私はまだ良い解決策を見つけていません)。

フィクスチャエラーの場合、エラーがなく、フィクスチャがロードされていない場合は、命名規則が不足している可能性があります。私たちにいくつかのコードを教えてくれますか?

4

this solutionをご覧ください。私はトランザクションを使用するのがベストアイデアだとは思わない。あなたのコードでトランザクションを使用する可能性があるからだ。このソリューションは、各テストでフィクスチャを手動でロードすることを提案します。

3

LiipFunctionalTestBundleは、テスト中のフィクスチャでの作業を簡素化するのに非常に便利です。基本的な考え方は、テストを実行して治具をロードするたびにデータベースを作成することです。これで、モデルを保存したり、削除したり、すべてのテストを同じようにすることができます。

関連する問題