|
|
|
@ -101,7 +101,8 @@ class UserProfileFixture extends ActiveFixture
|
|
|
|
|
また、同じ理由によって、`UserFixture` は常に `UserProfileFixture` がアンロードされた後でアンロードされます。 |
|
|
|
|
|
|
|
|
|
上記では、DB テーブルに関してフィクスチャを定義する方法を示しました。 |
|
|
|
|
DB と関係しないフィクスチャ (例えば、何らかのファイルやディレクトリに関するフィクスチャ) を定義するためには、より汎用的な基底クラス [[yii\test\Fixture]] から拡張して、[[yii\test\Fixture::load()|load()]] と [[yii\test\Fixture::unload()|unload()]] のメソッドをオーバーライドすることが出来ます。 |
|
|
|
|
DB と関係しないフィクスチャ (例えば、何らかのファイルやディレクトリに関するフィクスチャ) を定義するためには、より汎用的な基底クラス [[yii\test\Fixture]] から拡張して、 |
|
|
|
|
[[yii\test\Fixture::load()|load()]] と [[yii\test\Fixture::unload()|unload()]] のメソッドをオーバーライドすることが出来ます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## フィクスチャを使用する |
|
|
|
@ -109,13 +110,13 @@ DB と関係しないフィクスチャ (例えば、何らかのファイルや
|
|
|
|
|
[Codeception](http://codeception.com/) を使ってコードをテストしている場合は、フィクスチャのローディングとアクセスについては、 |
|
|
|
|
内蔵されているサポートを使用することが出来ます。 |
|
|
|
|
|
|
|
|
|
その他のテスト・フレームワークを使っている場合は、テスト・ケースで [[yii\test\FixtureTrait]] を使って同じ目的を達することが出来ます。 |
|
|
|
|
その他のテスト・フレームワークを使っている場合は、テスト・ケースで [[yii\test\FixtureTrait]] |
|
|
|
|
を使って同じ目的を達することが出来ます。 |
|
|
|
|
|
|
|
|
|
次に、Codeception を使って `UserProfile` 単体テストクラスを書く方法を説明します。 |
|
|
|
|
|
|
|
|
|
`\Codeception\Test\Unit` を拡張するあなたの単体テスト・クラスにおいて、 `_fixtures()` メソッドの中で使いたいフィクスチャを宣言するか、 |
|
|
|
|
または、アクターの `haveFixtures()` メソッドを直接に使用します。 |
|
|
|
|
例えば、 |
|
|
|
|
または、アクターの `haveFixtures()` メソッドを直接に使用します。例えば、 |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
|
namespace app\tests\unit\models; |
|
|
|
@ -149,17 +150,17 @@ class UserProfileTest extends \Codeception\Test\Unit
|
|
|
|
|
クラス名あるいはフィクスチャを指す構成情報配列を使うことが出来ます。 |
|
|
|
|
構成情報配列を使うと、フィクスチャがロードされるときのフィクスチャのプロパティをカスタマイズすることが出来ます。 |
|
|
|
|
|
|
|
|
|
また、フィクスチャにエイリアスを割り当てることも出来ます。 |
|
|
|
|
上記の例では、`UserProfileFixture` に `profiles` というエイリアスが与えられています。 |
|
|
|
|
そうすると、テスト・メソッドの中でエイリアスを使ってフィクスチャ・オブジェクトにアクセスすることが出来るようになります。 |
|
|
|
|
例えば、 |
|
|
|
|
また、フィクスチャにエイリアスを割り当てることも出来ます。上記の例では、`UserProfileFixture` に `profiles` というエイリアスが与えられています。 |
|
|
|
|
そうすると、テスト・メソッドの中でエイリアスを使ってフィクスチャ・オブジェクトにアクセスすることが出来るようになります。例えば、 |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
|
$profile = $I->grabFixture('profiles', 'user1'); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
は `UserProfileFixture` オブジェクトを返します。 |
|
|
|
|
|
|
|
|
|
さらには、`UserProfileFixture` は `ActiveFixture` を拡張するものですので、フィクスチャによって提供されたデータに対して、次の構文を使ってアクセスすることも出来ます。 |
|
|
|
|
さらには、`UserProfileFixture` は `ActiveFixture` を拡張するものですので、フィクスチャによって提供されたデータに対して、 |
|
|
|
|
次の構文を使ってアクセスすることも出来ます。 |
|
|
|
|
|
|
|
|
|
```php |
|
|
|
|
// 'user1' というエイリアスのデータ行に対応する UserProfileModel を返す |
|
|
|
@ -195,7 +196,6 @@ data\
|
|
|
|
|
|
|
|
|
|
このようにして、テスト間でフィクスチャのデータ・ファイルが衝突するのを回避し、必要に応じてデータ・ファイルを使い分けます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> Note: 上の例では、フィクスチャ・ファイルには例示目的だけの名前が付けられています。 |
|
|
|
|
> 実際の仕事では、フィクスチャ・クラスがどのフィクスチャ・クラスを拡張したものであるかに従って名前を付けるべきです。 |
|
|
|
|
> 例えば、DB フィクスチャを [[yii\test\ActiveFixture]] から拡張している場合は、DB テーブルの名前をフィクスチャのデータ・ファイル名として使うべきです。 |
|
|
|
@ -217,8 +217,7 @@ Yii は `yii fixture` コマンドライン・ツールでフィクスチャを
|
|
|
|
|
次のようなフィクスチャ・データをロードするとしましょう。 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
# users.php ファイル |
|
|
|
|
# フィクスチャ・データ・パス (デフォルトでは @tests\unit\fixtures\data) に保存されている |
|
|
|
|
# users.php ファイル - フィクスチャ・データ・パス (デフォルトでは @tests\unit\fixtures\data) に保存 |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
[ |
|
|
|
@ -237,33 +236,26 @@ return [
|
|
|
|
|
], |
|
|
|
|
]; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
データベースにデータをロードするフィクチャを使う場合は、これらの行が `users` テーブルに対して適用されます。 |
|
|
|
|
NoSQL フィクスチャ、例えば `mongodb` フィクチャを使う場合は、このデータは `users` コレクションに対して適用されます。 |
|
|
|
|
データベースにデータをロードするフィクチャを使う場合は、これらの行が `users` テーブルに対して適用されます。NoSQL フィクスチャ、例えば `mongodb` フィクチャを使う場合は、このデータは `users` コレクションに対して適用されます。 |
|
|
|
|
さまざまなロード戦略を実装する方法などについて公式 [ドキュメント](https://github.com/yiisoft/yii2/blob/master/docs/guide/test-fixtures.md)を参照して下さい。 |
|
|
|
|
上記のフィクスチャのサンプルは `yii2-faker` エクステンションによって生成されました。これについての詳細は、[自動生成のセクション](#auto-generating-fixtures) を参照して下さい。 |
|
|
|
|
|
|
|
|
|
フィクスチャ・クラスの名前は複数形であってはいけません。 |
|
|
|
|
|
|
|
|
|
### フィクスチャをロードする |
|
|
|
|
|
|
|
|
|
フィクスチャ・クラスは `Fixture` という接尾辞を持たなければいけません。 |
|
|
|
|
デフォルトでは、フィクスチャは `tests\unit\fixtures` 名前空間の下で探されます。 |
|
|
|
|
この挙動は構成またはコマンド・オプションによって変更することが出来ます。 |
|
|
|
|
`-User` のように名前の前に `-` を指定することで、ロードまたはアンロードから除外するフィクスチャを指定することが出来ます。 |
|
|
|
|
フィクスチャ・クラスは `Fixture` という接尾辞を持たなければいけません。デフォルトでは、フィクスチャは `tests\unit\fixtures` 名前空間の下で探されます。 |
|
|
|
|
この挙動は構成またはコマンド・オプションによって変更することが出来ます。`-User` のように名前の前に `-` を指定することで、ロードまたはアンロードから除外するフィクスチャを指定することが出来ます。 |
|
|
|
|
|
|
|
|
|
フィクスチャをロードするためには、次のコマンドを実行します。 |
|
|
|
|
|
|
|
|
|
> Note: データをロードする前に、アンロードのシーケンスが実行されます。これによって、通常は、前に実行されたフィクスチャによって挿入された |
|
|
|
|
既存のデータが全てクリーンアップされることになります。 |
|
|
|
|
> Note: データをロードする前に、アンロードのシーケンスが実行されます。これによって、通常は、前に実行されたフィクスチャによって挿入された 既存のデータが全てクリーンアップされることになります。 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
yii fixture/load <fixture_name> |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
要求される `fixture_name` パラメータが、データがロードされるフィクスチャの名前を指定するものです。 |
|
|
|
|
いくつかのフィクスチャを一度にロードすることが出来ます。 |
|
|
|
|
下記はこのコマンドの正しい形式です。 |
|
|
|
|
いくつかのフィクスチャを一度にロードすることが出来ます。下記はこのコマンドの正しい形式です。 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
// `User` フィクスチャをロードする |
|
|
|
@ -284,14 +276,11 @@ yii fixture "*"
|
|
|
|
|
// 一つを除いて全てのフィクスチャをロードする |
|
|
|
|
yii fixture "*, -DoNotLoadThisOne" |
|
|
|
|
|
|
|
|
|
// 異なる名前空間からフィクスチャをロードする |
|
|
|
|
// デフォルトの名前空間は tests\unit\fixtures |
|
|
|
|
// 異なる名前空間からフィクスチャをロードする (デフォルトの名前空間は tests\unit\fixtures) |
|
|
|
|
yii fixture User --namespace='alias\my\custom\namespace' |
|
|
|
|
|
|
|
|
|
// 他のフィクスチャをロードする前に、グローバルフィクスチャ |
|
|
|
|
// `some\name\space\CustomFixture` をロードする。 |
|
|
|
|
// デフォルトでは、このオプションが `InitDbFixture` について適用され、 |
|
|
|
|
// 整合性チェックが無効化/有効化されます。 |
|
|
|
|
// 他のフィクスチャをロードする前に、グローバルフィクスチャ `some\name\space\CustomFixture` をロードする。 |
|
|
|
|
// デフォルトでは、このオプションが `InitDbFixture` について適用され、整合性チェックが無効化/有効化されます。 |
|
|
|
|
// カンマで区切って複数のグローバル・フィクスチャを指定することが出来ます。 |
|
|
|
|
yii fixture User --globalFixtures='some\name\space\Custom' |
|
|
|
|
``` |
|
|
|
@ -301,9 +290,7 @@ yii fixture User --globalFixtures='some\name\space\Custom'
|
|
|
|
|
フィクスチャをアンロードするためには、次のコマンドを実行します。 |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
// Users フィクスチャをアンロードする。 |
|
|
|
|
// デフォルトではフィクスチャのストレージをクリアします。 |
|
|
|
|
// 例えば、"users" テーブル、または、mongodb フィクスチャなら "users" コレクションがクリアされます。 |
|
|
|
|
// Users フィクスチャをアンロードする。デフォルトではフィクスチャのストレージをクリアします。(例えば、"users" テーブル、または、mongodb フィクスチャなら "users" コレクションがクリアされます。) |
|
|
|
|
yii fixture/unload User |
|
|
|
|
|
|
|
|
|
// いくつかのフィクスチャをアンロードする |
|
|
|
@ -340,8 +327,7 @@ yii fixture/unload "*, -DoNotUnloadThisOne"
|
|
|
|
|
|
|
|
|
|
### フィクスチャを自動生成する |
|
|
|
|
|
|
|
|
|
Yii は、あなたの代りに、何らかのテンプレートに従ってフィクスチャを自動生成することが出来ます。 |
|
|
|
|
さまざまなデータで、また、いろいろな言語と形式で、フィクスチャを生成することが出来ます。 |
|
|
|
|
Yii は、あなたの代りに、何らかのテンプレートに従ってフィクスチャを自動生成することが出来ます。さまざまなデータで、また、いろいろな言語と形式で、フィクスチャを生成することが出来ます。 |
|
|
|
|
この機能は、[Faker](https://github.com/fzaninotto/Faker) ライブラリと `yii2-faker` エクステンションによって実現されています。 |
|
|
|
|
詳細については、エクステンションの [ガイド](https://github.com/yiisoft/yii2-faker/tree/master/docs/guide-ja) を参照して下さい。. |
|
|
|
|
|
|
|
|
|