7425b263d5
- Add 4 CakePHP Claude Code skills: cakephp-unit-test, cakephp-test-setup, cakephp-test-review, cakephp-mock-helper - Add 11 CakePHP PHPUnit component templates (Table, Entity, Controller, Service, Command, Component, Middleware, Mailer, Form, Behavior, Helper) - Add CakePHP configs (phpunit.xml.dist, app_local.test.php for SQLite in-memory) - Add comprehensive CakePHP documentation and component guides - Update test-runner.sh and installer to auto-detect Laravel and CakePHP - Add CakePHP CI/CD templates for GitHub Actions and GitLab CI - Update system prompt, verification checklist, and README with dedicated guides
4.6 KiB
4.6 KiB
name, description
| name | description |
|---|---|
| cakephp-test-setup | Tự động quét kiểm tra môi trường, dependencies, database config (Datasources.test) và docker để chuẩn bị viết Unit Test cho bất kỳ dự án CakePHP nào. |
Skill: CakePHP Test Environment Setup & Health Check
Skill này chịu trách nhiệm chuẩn bị "Bước 0" cho dự án CakePHP trước khi bắt đầu viết bất kỳ Unit/Integration Test nào.
Cách kích hoạt
- Chế độ kiểm tra (Dry-run / Health-Check):
/cakephp-test-setup - Chế độ tự động cài đặt gói thiếu (Auto-Install Mode):
/cakephp-test-setup --install
Quy trình thực hiện (Execution Workflow)
Khi người dùng kích hoạt lệnh /cakephp-test-setup, Agent sẽ tuần tự thực hiện các bước sau:
Bước 1: Quét composer.json & Nhận Diện CakePHP Version
- Đọc file
composer.jsontại thư mục gốc của dự án. - Xác định:
- Phiên bản CakePHP:
cakephp/cakephp: ^5.0: Yêu cầu PHP >= 8.1cakephp/cakephp: ^4.0: Yêu cầu PHP >= 7.4cakephp/cakephp: ^3.0: Legacy CakePHP 3.x
- Test Runner & Dependencies:
phpunit/phpunitcakephp/cakephp-codesniffer(nếu có)mockery/mockery(hỗ trợ nâng cao)fakerphp/faker
- Phiên bản CakePHP:
- Nếu phát hiện thiếu thư viện hoặc cờ
--install:- Kích hoạt lệnh cài đặt qua môi trường tương ứng:
# Nếu dùng Docker Compose (service app / web / php): docker compose exec -T app composer require --dev mockery/mockery fakerphp/faker --with-all-dependencies # Nếu chạy Local: composer require --dev mockery/mockery fakerphp/faker --with-all-dependencies
- Kích hoạt lệnh cài đặt qua môi trường tương ứng:
Bước 2: Kiểm tra Cấu hình Testing Database (Datasources.test)
- Kiểm tra file
config/app_local.phphoặcconfig/app.php. - Xác thực cấu hình
Datasources.test:- Đảm bảo kết nối
testđược tách biệt vớidefault(production/dev). - Khuyên dùng SQLite In-Memory hoặc SQLite file test để đảm bảo tốc độ cao và an toàn tuyệt đối 100% cho dữ liệu dev:
'test' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Sqlite', 'database' => ':memory:', // hoặc TMP . 'test.sqlite' 'encoding' => 'utf8', 'timezone' => 'UTC', 'cacheMetadata' => true, 'quoteIdentifiers' => false, ],
- Đảm bảo kết nối
- Kiểm tra file cấu hình PHPUnit (
phpunit.xmlhoặcphpunit.xml.dist):- Đảm bảo có suite
<testsuite name="app">trỏ vàotests/TestCase. - Có extension / listener fixture (
Cake\TestSuite\Fixture\FixtureExtensioncho CakePHP 4.3+ / 5.x).
- Đảm bảo có suite
Bước 3: Phát hiện Môi trường Docker / Runtime
- Kiểm tra
bin/cake-> Đảm bảo có quyền thực thi (chmod +x bin/cake). - Kiểm tra
docker-compose.yml-> Dò tìm service chạy CakePHP (app,web,php,backend) -> Lệnh chuẩn:docker compose exec -T app bin/cake test app # Hoặc: docker compose exec -T app vendor/bin/phpunit - Nếu chạy Local: Kiểm tra PHP CLI có đủ extension
intl(php -m | grep intl) vàpdo_sqlite(php -m | grep sqlite).
Bước 4: Chạy Smoke Test (Kiểm tra thử nghiệm)
- Chạy thử nghiệm một test case mẫu sẵn có hoặc test mặc định:
./test-runner.sh # hoặc bin/cake test app - Nếu test PASS: Báo cáo môi trường đã sẵn sàng 100%.
- Nếu test FAIL: Đưa ra chẩn đoán chính xác nguyên nhân (thiếu driver SQLite, sai database credentials, thiếu fixture strategy,...).
Mẫu báo cáo đầu ra cho người dùng:
### 📋 BÁO CÁO MÔI TRƯỜNG TEST CAKEPHP (HEALTH CHECK)
1. **Framework & Dependencies**:
- CakePHP: 4.5.3 (hoặc 5.0.x) | PHP: 8.2
- Test Runner: PHPUnit 10.5
- Mocking: Mockery 1.6 (Đã cài)
- Fixture Strategy: TransactionStrategy / FixtureExtension [OK]
2. **Cấu hình Môi trường Test**:
- Datasource Test: SQLite (:memory:) [OK - An toàn, không đụng dữ liệu dev]
- phpunit.xml: Đã cấu hình suite `app` trỏ tới `tests/TestCase`
3. **Môi trường thực thi**:
- Docker Service: `app` (hoặc `web`) đang hoạt động
- Lệnh chạy test chuẩn: `docker compose exec -T app bin/cake test app`
4. **Kết quả Smoke Test**:
- Trạng thái: ✅ PASSED
🎉 **Môi trường CakePHP đã hoàn toàn sẵn sàng cho việc sinh Unit Test!**