プラグイン単体でユニットテストを行うには、BcBake を利用すると便利です。
アプリケーション本体を準備せずともユニットテストを行うことができます。
Docker等のPHPの実行環境は必要となりますので別途ご用意ください。
BcBakeでアプリケーションを作成した場合、ユニットテスト実行時は、tests/TestApp がアプリケーションディレクトリとして見なされる仕様となっています。
composer で必要なパッケージをインストールします。
composer install
ユニットテスト実行時、データベースに接続しようとしますので、事前にデータベースを準備してください。
データベースの接続情報は、tests/TestApp/config/install.php に記載してあります。
直接書き換えてもいいですが、GitHubActionsで利用する場合は、.env ファイルを作成し、次のように記載してください。
# tests/TestApp/config/.env
export DB_HOST="localhost"
テストの作成時は、BaserCore\TestSuite\BcTestCase を継承して作成します。
テストの実行は、vendor/bin/phpunit コマンドで行います。
baserCMS本体の FixtureFactory や、FixtureScenario を利用したい場合もあるかと思いますが、そのままでは利用できません。
利用したい場合は、composer.json に、オートロードセットを追加し、composer install を実行します。
"autoload-dev": {
"psr-4": {
"BaserCore\\Test\\": "vendor/baserproject/baser-core/tests/",
}
},
BcBakeを利用した場合、.github/workflows/test.yml が用意されていますので、そのまま利用できます。
既存のプラグインでプラグイン単体でユニットテストを行うには、BcBakeで、サンプルプラグインを作成し、次のフォルダをコピーし、composer.json など適宜調整してください。
.githubtestscomposer.jsonなお、composer で必要なパッケージは次のとおりです。
"require": {
"php": "^8.1",
"baserproject/baser-core": "5.1.*"
},
"require-dev": {
"phpunit/phpunit": "^10.5",
"josegonzalez/dotenv": "^4.0",
"vierge-noire/cakephp-fixture-factories": "^3.0",
"vierge-noire/cakephp-test-suite-light": "^3.0"
},