2011-12-02 6 views
1

symfony 1.xでは、いくつかのコードで、データベースを変更せずにtestを実行することができました。たとえば、私のテストの1つは、ユーザーの登録をテストします。このテストを実行すると、ユーザーは常にデータベースに入ります。 データベースを永久に変更せずにテストを実行するにはどうすればよいですか?テストでデータベースに影響を与えない

+0

あなたの修正を追跡し、その後に元に戻す。または、テストデータベースを作成します。データベースを変更すると、変更されました。「元に戻す」ボタンはありません。だからあなたは自分自身を構築しなければならない。行を挿入する場合は、後でそれを削除します。行を変更した場合は、行を選択して保存しておいてから、後で元に戻すことができます。同じものを削除する場合も同じです。代わりに(より良い)ライブデータベースを反映するテストデータベースを用意し、そのテストを行います。 – DaveRandom

+0

これは、sf 1.xでは良い方法ではありませんでしたか?私はテスト用のデータベースが優れていると思いますが、私はセキュリティのために各テストの間に彼女を再初期化する必要がありますか? :/ – bux

答えて

2

まず、各テスト後にデータベースをロールバックする方法を説明しているアレクサンドルの優れた記事があります(this)。

sqliteをテストデータベースとして使用することは、メモリー内にあるため、はるかに高速です。 This articleはこれを行う方法を説明しています。この方法は、オブジェクトの作成や編集など、テスト間のデータを処理する必要がある場合に便利です。これは良いpraticeではありませんが、時々回り道がありません。

私は、スピードのためにsqliteデータベースを持ち、すべてのテストの後に、Alexandreが記述したようにロールバックを行うスプリットアプローチを使用します。それは非常にうまくいく:-)

+0

ありがとうございました!私は最初のリンク(アレクサンドルサロメブログ)を使用し、それは動作します。私は教義に問題があります(doctrineで検索するエンティティの一部は「リンクされていません」:「新しいエンティティは関係を通じて見つかった...」)が、このスクリプトにリンクされていればいいです。 – bux

関連する問題