2011-01-27 15 views
1

私はテストの実践を改善する作業を始めており、Yii FrameworkとRailsのFixturesの使用について読んでいます。私はフィクスチャの基本的な考え方を理解していますが、各テストの前に特定のデータセットを読み込むことはできますが、テスト前のデータベース状態がどうなるかはわかりません。これらのテストは本番環境では実行されませんが、いくつかのテストを実行するたびに拭きたくないデータが開発モデルに残っている可能性があります。あなたは、備品やユニットテストに関するこの背景知識を明確にする手助けをしてもらえますか?データベース/モデルのフィクスチャと元の状態

答えて

1

基本的に、CDbTestCaseから派生したテストクラスは、そのsetUp関数でフィクスチャをインポートしようとします。

あなた自身のクラスで$ fixtures変数を宣言しないと、あなたが持っているフィクスチャのセット全体がインポートされることに注目してください(テストをたくさんすると

事前に特定のデータが必要なテーブルがあり、テスト中に変更しない場合(たとえばProductsテーブルなど)、テーブルが存在することを確認するだけですデータベースとそれに対応するフィクスチャを作成しないでください。 Yiiはテーブルに触れず、期待どおりに使用できます。

+0

Yiiは自動的にフィクスチャをロードするためのテーブルのテストコピーを作成するか、テスト中に進行中のポケテストデータがテスト全体にわたって持続するようにテストコピーを作成する必要がありますか? – jmans

+1

オリジナルのテーブルをすべて保持するデータベースの複製を作成する必要はありません。次に、テスト用のデータベースを指すようにtest.php設定ファイルを変更します。フィクスチャを使用せずにテストを実行しないでください。そうしないと、通常のテーブルがクリアされます。 – Blizz

1

デベロッパーの作業が開発環境(データベースymlファイルに設定されている)に当たる間、テストはテストデータベースに対して実行されます。テスト環境はそこにあり、実行中のアプリケーションを「テストする」ときに使用するデータに影響を与えずに、既知の状態にすることができます。

希望を少しクリアするのに役立ちます。

+2

基本的に:フィクスチャはDB内のデータを消去しますので、重要なデータを持たない特別なテストデータベースを指す別の/ configファイルからテストを実行してください! – thaddeusmt

関連する問題