単体テスト
単体テストは testing/unit ディレクトリにあり、すべての種類の単体テストと統合テストが含まれている必要があります。
各テスト ケースは、単体テストの標準 Codeception 形式である Codeception\Test\Unit クラスを拡張します。 Yii で完全に分離された単体テストを開発するのは非常に難しいため、アプリケーションは各テスト ケースの前に開始されます。 (推奨される学習: yii チュートリアル )
testing/unit.suite.yml で Yii2 モジュールが有効になっているファイルでテストを構成します:
modules: enabled: - Yii2: part: [orm, email]
これmodule is テストケースは Yii アプリケーションを起動し、テストを簡素化するための追加のヘルパーメソッドを提供します。機能テスト方法のみの必要性を排除するために、ORM と電子メールの部分のみが含まれています。
$this->tester テスト ケースのクラスにアクセスすることで、Yii2 モジュールのメソッドを使用できます。したがって、orm 部分と電子メール部分が有効な場合、これらの部分に属するメソッドを呼び出すことができます:
<?php // insert records in database $this->tester->haveRecord('app/model/User', ['username' => 'davert']); // check records in database $this->tester->seeRecord('app/model/User', ['username' => 'davert']); // test email was sent $this->tester->seeEmailIsSent(); // get a last sent emails $this->tester->grabLastSentEmail();
フィクスチャ部分が有効な場合、テストでフィクスチャをロードして使用するためのメソッドも取得します:
<?php // load fixtures $this->tester->haveFixtures([ 'user' => [ 'class' => UserFixture::className(), // fixture data located in tests/_data/user.php 'dataFile' => codecept_data_dir() . 'user.php' ] ]); // get first user from fixtures $this->tester->grabFixture('user', 0);
Yii2 でモジュールが有効になっている場合、アプリケーションはテスト後に初期化されクリーンアップされるため、テスト内で Yii::$app を安全に呼び出すことができます。テスト ケースにヘルパー メソッドまたはカスタム アサーションを追加する場合は、Codeception\Test\Unit を拡張するのではなく、独自のスタンドアロン ヘルパー クラスを作成する必要があります。
以上がYii で単体テストを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。