1

タイトルのように、データベース出力のテストを管理する3つの方法を考えることができます(アプリケーションでORMを使用し、単体テストでPDOを使用しています)。どれが一番いいですか?これをどのように処理しますか?:

  1. 特にテスト用に必要なデータを使用してデータセットを作成し、コードを変更して、(テストクラスの)ORM配列ではなくxmlを読み取るようにします。

  2. setUp()メソッドを作成し、ORM配列を含む属性を設定して、それを処理します。

  3. 2番目のポイントと同じですが、テスト用に特別に作成された別のデータベースを使用します
4

2 に答える 2

8

データベーステストに関するPHPUnitの章を読むことをお勧めします。

セーブポイントを介してネストされたトランザクションをサポートする独自のシンラッパーを介してPDOを使用します。ブートストラップでは、非常に基本的なシードデータとともに本番環境の構造全体を含むテストデータベースを作成します。各setUp()およびtearDown()の間に、トランザクションを開始してからロールバックします。

各テストは、生のSQLファイルから必要なデータのサブセットをインポートします。そこから、ORMは実際の挿入などを使用してテストされます。ただし、これは、DBドライバーがネストされたトランザクションをサポートしているためにのみ機能します。テストが開始/コミットし、成功/失敗をチェックする場合でも、すべてが機能します。

ネストされたトランザクションのサポートがない場合は、各テストでデータベース全体をセットアップして破棄することができますが、それは遅くなります。また、実際のデータベースに対して常にテストする必要はないことに注意してください...テストする対象の種類によって異なります。

于 2012-09-03T19:09:21.907 に答える
2

私のテストでは、テストデータベースを使用します。

MySQLのサイトにはいくつかのテストデータベースがあります。Sakilaはかなり難しいと思うので、Worldデータベースを使用ます

于 2012-09-03T19:04:11.767 に答える