2045c856e9
- Add 10 core testing guides (setup, AAA principles, PHPUnit/Pest, mocking, anti-patterns, PHP 8.4+, debugging, data factories, advanced edge cases) - Add 13 component testing guides covering all Laravel layers - Add standard templates for PHPUnit 10/11 and Pest v2/v3 including ArchitectureTest - Add Docker smart test runner, dependency installer, and CI/CD templates (GitHub Actions, GitLab CI) - Add 4 Claude Code skills (laravel-test-setup, laravel-unit-test with --all mode, laravel-test-review, laravel-mock-helper) - Add single unified installer script (sg-install-unit-testing.sh) with global support, CLI runners, and 1-click updater (sg-test-update) - Add comprehensive documentation (README.md, USAGE-GUIDE.md) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
92 lines
4.4 KiB
Markdown
92 lines
4.4 KiB
Markdown
---
|
|
name: laravel-test-setup
|
|
description: Tự động quét kiểm tra môi trường, dependencies, database config và docker để chuẩn bị viết Unit Test cho bất kỳ dự án Laravel nào.
|
|
---
|
|
|
|
# Skill: Laravel Test Environment Setup & Health Check
|
|
|
|
Skill này chịu trách nhiệm chuẩn bị "Bước 0" cho dự án Laravel trước khi bắt đầu viết bất kỳ Unit Test nào.
|
|
|
|
## Cách kích hoạt
|
|
- **Chế độ kiểm tra (Dry-run / Health-Check)**:
|
|
```text
|
|
/laravel-test-setup
|
|
```
|
|
- **Chế độ tự động cài đặt gói thiếu (Auto-Install Mode)**:
|
|
```text
|
|
/laravel-test-setup --install
|
|
```
|
|
|
|
## Quy trình thực hiện (Execution Workflow)
|
|
|
|
Khi người dùng kích hoạt lệnh `/laravel-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 Thư Viện Cần Thiết
|
|
1. Đọc file `composer.json` tại thư mục gốc của dự án.
|
|
2. Xác định:
|
|
- **Phiên bản PHP & Laravel**: PHP 8.0 - 8.4+, Laravel 9.x - 13.x
|
|
- **Test Framework**: `phpunit/phpunit` hay `pestphp/pest`
|
|
- **Mocking & Fake**: `mockery/mockery`, `fakerphp/faker`
|
|
- **Performance & Coverage**: `brianium/paratest`, `nunomaduro/collision`
|
|
3. Nếu phát hiện thiếu thư viện:
|
|
- Nếu có cờ `--install` hoặc người dùng đồng ý: Agent tự động kích hoạt lệnh cài đặt qua môi trường tương ứng (Sail / Docker Compose / Local Composer):
|
|
```bash
|
|
# Nếu dùng Sail:
|
|
./vendor/bin/sail composer require --dev mockery/mockery fakerphp/faker --with-all-dependencies
|
|
# Nếu dùng Docker Compose (service app):
|
|
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
|
|
```
|
|
- Hoặc chạy script `./setup-test-deps.sh` có sẵn.
|
|
|
|
### Bước 2: Kiểm tra cấu hình Testing Database & Drivers
|
|
1. Kiểm tra sự tồn tại của `phpunit.xml` (hoặc `phpunit.xml.dist`) hoặc `.env.testing`.
|
|
2. Xác thực cấu hình thẻ `<php>` trong `phpunit.xml`:
|
|
- `DB_CONNECTION` phải là `sqlite` và `DB_DATABASE` là `:memory:` (hoặc kết nối DB test riêng an toàn).
|
|
- `CACHE_STORE` hoặc `CACHE_DRIVER` phải là `array`.
|
|
- `QUEUE_CONNECTION` phải là `sync`.
|
|
- `MAIL_MAILER` phải là `array`.
|
|
- `BCRYPT_ROUNDS` nên là `4`.
|
|
3. Nếu chưa có hoặc cấu hình đang trỏ vào database dev thật:
|
|
- Cảnh báo người dùng về nguy cơ mất dữ liệu dev.
|
|
- Đề xuất tạo `.env.testing` hoặc cập nhật `phpunit.xml` dựa trên template có sẵn tại `templates/configs/`.
|
|
|
|
### Bước 3: Phát hiện Môi trường Docker / Runtime
|
|
1. Kiểm tra `./vendor/bin/sail` -> Nếu có Sail, ưu tiên lệnh `./vendor/bin/sail test`.
|
|
2. Kiểm tra `docker-compose.yml` -> Dò tìm service PHP (`app`, `php`, `backend`,...) -> Đề xuất lệnh `docker compose exec -T <service> php artisan test`.
|
|
3. Nếu chạy Local: Kiểm tra xem extension `pdo_sqlite` đã được bật chưa bằng `php -m | grep sqlite`.
|
|
|
|
### Bước 4: Chạy Smoke Test (Kiểm tra thử nghiệm)
|
|
1. Chạy thử nghiệm lệnh test hiện có của project (ví dụ: `php artisan test --filter=ExampleTest`).
|
|
2. Nếu test PASS: Báo cáo môi trường đã sẵn sàng 100% để sinh Unit Test.
|
|
3. Nếu test FAIL hoặc văng lỗi (ví dụ: thiếu APP_KEY, thiếu SQLite driver, lỗi database): Đưa ra chẩn đoán chính xác nguyên nhân và lệnh khắc phục.
|
|
|
|
---
|
|
|
|
## Mẫu báo cáo đầu ra cho người dùng:
|
|
|
|
```markdown
|
|
### 📋 BÁO CÁO MÔI TRƯỜNG TEST (HEALTH CHECK)
|
|
|
|
1. **Framework & Dependencies**:
|
|
- Laravel: 11.2.0 | PHP: 8.3
|
|
- Test Runner: Pest PHP v2.34
|
|
- Mocking: Mockery 1.6 (Đã cài)
|
|
- Faker: FakerPHP 1.23 (Đã cài)
|
|
|
|
2. **Cấu hình Môi trường**:
|
|
- DB Test: SQLite (:memory:) [OK - An toàn]
|
|
- Cache / Queue / Mail: Array / Sync [OK - Tối ưu]
|
|
- BCRYPT_ROUNDS: 4 [OK - Tốc độ cao]
|
|
|
|
3. **Môi trường thực thi**:
|
|
- Docker Service: `app` container đang hoạt động
|
|
- Lệnh chạy test chuẩn: `docker compose exec -T app php artisan test`
|
|
|
|
4. **Kết quả Smoke Test**:
|
|
- Trạng thái: ✅ PASSED (2 tests, 4 assertions)
|
|
|
|
🎉 **Môi trường đã hoàn toàn sẵn sàng cho việc sinh Unit Test!**
|
|
```
|