illusiard / yii2-testkit
Minimal Yii2 testing kit with Codeception templates and a Docker test stand.
Requires
- php: ^8.5
Requires (Dev)
- codeception/codeception: ^5.2
- codeception/module-asserts: ^3.1
- codeception/module-yii2: ^1.0
- yiisoft/yii2: ^2.0.55
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-11 07:53:00 UTC
README
Short Description
Минимальный каркас для тестирования Yii2 расширений и приложений. Пакет даёт базовые TestCase и шаблоны Codeception без лишней логики.
Installation
Требования:
- PHP 8.5+
- Composer 2
docker composeдля встроенного test stand
Установите пакет как dev-зависимость:
composer require --dev illusiard/yii2-testkit
Using In Yii2 Extension (Extension Mode)
В расширении используйте YiiTestCase для поднятия минимального приложения:
use Illusiard\Yii2Testkit\Testing\YiiTestCase; final class MyServiceTest extends YiiTestCase { protected function appConfig(): array { return [ 'id' => 'test-app', 'basePath' => __DIR__, ]; } public function testSomething(): void { $this->assertNotNull(\Yii::$app); } }
Using In Yii2 Application (Basic / Advanced)
В приложении используйте шаблоны resources/codeception/*.yml и настройте configFile/entryScript под структуру вашего проекта. Приложение поднимается самим Codeception через модуль Yii2.
Test Stand
Пакет теперь включает минимальный встроенный слой test stand для Docker: nginx + php-fpm на PHP 8.5 поднимаются всегда, а дополнительные сервисы выбираются через Illusiard\Yii2Testkit\TestStand\TestServices.
Для работы test stand нужен установленный docker compose.
Пример:
use Illusiard\Yii2Testkit\TestStand\StandConfig; use Illusiard\Yii2Testkit\TestStand\StandManager; $config = StandConfig::load(__DIR__ . '/tests/_config/stand.php'); $stand = new StandManager(); $stand->up($config, true); $stand->logs($config); $stand->down($config, true);
Структура конфига:
return [ 'services' => ['mysql', 'redis'], 'envFiles' => ['/abs/path/to/test.env'], 'appConfig' => [ 'projectRoot' => '/abs/path/to/project', 'webRoot' => '/abs/path/to/project/web', 'entryScript' => 'index-test.php', ], ];
Особенности:
appне указывается вservices:nginxиphp-fpmподнимаются автоматически.- Логи сохраняются в
tests/_output/testkit/файламиdocker-compose.logиservices.log. - Host port для nginx задаётся через переменную окружения
TESTKIT_HTTP_PORT. Если она не задана, используется8080. envFilesпередаются в контейнеры как runtime env-файлы, но не используются для выбора host port.
Поддерживаемые сервисы:
mysqlpostgresqlredisrabbitmq
Ограничения текущей версии: только встроенная docker-структура пакета (без внешних compose файлов), только HTTP, без миграций и фикстур, без HTTP-клиента и без app runner вне Docker.
Test Suites Overview (Unit / Integration / Functional)
unit: тесты без Yii, базовыйUnitTestCase.integration: тесты с Yii, обычно на основеYiiTestCase.functional: функциональные тесты в App Mode через модуль Yii2 иconfigFileприложения.
License
BSD-3-Clause. Подробности в LICENSE.