まだまだ、未実装のテスト多く、実装が足りていません。(2022/04/24)
未実装のテストを実装して頂けると非常に助かります。
未実装のテストの一覧は 未実装テスト一覧 から確認できます。
開発環境の構築 を参考に、Dockerでのローカル開発環境を作ります。
未実装テスト一覧 よりテストの実装対象をピックアップします。
なお、「_NotYetMigrated」というフォルダの中にあるクラスは、まだ全く移行できていないものになります。テストを実装する際は、まず、上位フォルダに移動します。
ユニットテスト用のクラスは testsフォルダの同階層に配置します。
存在する場合はそちらを利用し、ない場合は作成します。
/plugins/baser-core/src/Controller/AppController.php
↓
/plugins/baser-core/tests/TestCase/Controller/AppControllerTest.php
こちらも「_NotYetMigrated」フォルダの中に存在する場合があるので注意します。「_NotYetMigrated」の中にある場合はこちらを上位フォルダに移動して利用します。
実装用のブランチを作成します。
Issueが存在する場合はIssue番号をブランチ名に入れます(例:dev-#555)が、存在しない場合はおまかせします。
(ユニットテストに関してはIssueを作ってもいいですし作らなくてもいいです)
git checkout -b branch-name
テストが未実装となっているクラスメソッドはほとんどの場合、本体の処理のCakePHP4への移行が完了していません。移行が完了していないものは、移行しながらユニットテストを実装していきます。
ユニットテストの実装仕様を検討する際、本体メソッドの仕様を読み解く必要がありますが、メソッドの意図などがわかりにくい場合は、無理せずスキップしましょう。
なお、正常系、異常系の両方が網羅できることが望ましいですが、まずは正常系の実装を目指してください。
詳細については、ユニットテスト を参考にしてください。
# コンテナにログイン
cd docker
docker exec -it bc-php /bin/bash
# テスト実行
# vendor/bin/phpunit ファイル名 --filter メソッド名
# (例)
vendor/bin/phpunit plugins/baser-core/tests/Controller/AppControllerTest.php --filter testConstruct
なお、本体クラスのメソッドの上にアノテーションの記載があり、次を意味しています。実装状況に応じてアノテーションを付与します。
(漏れがある場合は補完お願いします)
/**
* Initialize
* @checked
* @noTodo
* @note(value="BcEmailを実装したあとに確認")
* @unitTest
* @doc
*/
public function initialize(): void
{
}
なお、アノテーションを付与する場合は、クラスファイルの冒頭に use
宣言が必要です。なければ記載してください。
use BaserCore\Annotation\NoTodo;
use BaserCore\Annotation\Note;
use BaserCore\Annotation\Checked;
use BaserCore\Annotation\UnitTest;
use BaserCore\Annotation\Doc;
dev
ブランチにプルリクエストを送ってください。
マージされると、未実装テスト一覧 にアノテーションが反映されます。
手順は以上です。
$request = $this->getRequest('/baser/admin');
$this->adminLogin($request);
$token = $this->apiLoginAdmin($id);
$requestKey= $this->execPrivateMethod($this->PasswordRequest, 'makeRequestKey');
$this->attachEvent(['EventName' => ['callable' => function(Event $event) {
}]]);
$this->entryEventToMock(self::EVENT_LAYER_CONTROLLER, 'BaserCore.Contents.searchIndex', function(Event $event) {
});
$this->resetEvent();