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
3.6 KiB
3.6 KiB
name, description
| name | description |
|---|---|
| cakephp-test-review | Đánh giá, chấm điểm chất lượng và phát hiện các lỗi anti-patterns trong file Unit / Integration Test CakePHP có sẵn theo thang điểm 100. |
Skill: CakePHP Test Reviewer
Skill này chịu trách nhiệm kiểm tra chất lượng và phát hiện lỗi anti-patterns trong một file test CakePHP đã viết sẵn.
Cách kích hoạt
/cakephp-test-review <đường_dẫn_file_test>
Ví dụ: /cakephp-test-review tests/TestCase/Model/Table/ArticlesTableTest.php
Ví dụ: /cakephp-test-review tests/TestCase/Controller/ArticlesControllerTest.php
Tiêu Chí Đánh Giá (Scoring Criteria - Thang Điểm 100)
Agent sẽ quét file test qua 5 tiêu chí chuẩn:
1. Tính Cô Lập & An Toàn Dữ Liệu (Isolation & Database Safety - 25đ)
- Test có dùng đúng test datasource (
Datasources.test) hoặc fixtures không, hay vô tình tác động lên database dev thật? - Có bị gọi HTTP ra API ngoài thực tế mà quên mock không?
- Fixture có được khai báo tối giản chỉ những bảng cần thiết (tránh nạp thừa hàng chục bảng gây chậm)?
2. Sử Dụng Đúng Trait & Chuẩn CakePHP (CakePHP Conventions - 20đ)
- Controller test có dùng
Cake\TestSuite\IntegrationTestTraitkhông (hay tạonew Controllerthủ công - Anti-pattern)? - Command test có dùng
Cake\Console\TestSuite\ConsoleIntegrationTestTraitkhông? - Mailer test có dùng
Cake\TestSuite\EmailTraitkhông? - Có bật
enableCsrfToken()vàenableSecurityToken()khi test POST/PUT không?
3. Chiến Lược Giả Lập & Fixtures (Mocking vs Fixtures - 20đ)
- Có bị over-mocking (Mock cả Entity, Table query cơ bản thay vì dùng Fixture) không?
- Các service bên thứ 3 (Payment, Notification, Cloud Storage) có được mock rõ ràng với số lần gọi (
->once(),->never()) không?
4. Cấu Trúc & Assertions (Structure & Assertions - 20đ)
- Có tuân thủ mô hình AAA (
// Arrange,// Act,// Assert) rõ ràng không? - Dùng assertion đặc thù của CakePHP:
$this->assertResponseOk(),$this->assertResponseCode(200),$this->assertRedirect(),$this->assertFlashMessage()thay vì assert thủ công yếu ớt? - Dùng strict assertions:
$this->assertSame()thay vì$this->assertEquals().
5. Độ Phủ Kịch Bản & Nhánh Biên (Scenario & Branch Coverage - 15đ)
- Đã kiểm tra cả Happy Path lẫn Unhappy Path (validation lỗi, entity không tìm thấy 404, không có quyền 403)?
- Các giá trị biên (
null, mảng rỗng, chuỗi trắng) đã được kiểm thử đầy đủ chưa?
Báo Cáo Đầu Ra Mẫu:
### 🔍 BÁO CÁO REVIEW TEST CAKEPHP: `ArticlesControllerTest.php`
**Điểm tổng kết: 65/100 (Cần cải thiện)**
#### ⚠️ Các vấn đề phát hiện (Anti-Patterns):
1. **Thiếu CSRF/Security Token tại line 32**: Gọi POST `/articles/add` nhưng chưa kích hoạt `$this->enableCsrfToken()`, dễ dẫn đến test fail khi bật middleware CSRF.
2. **Assertion lỏng lẻo tại line 45**: Dùng `$this->assertTrue(true)` thay vì `$this->assertResponseSuccess()` hoặc kiểm tra dữ liệu thật được lưu vào DB.
3. **Chưa có kịch bản Validation Failure**: Chưa kiểm thử trường hợp người dùng submit form thiếu trường `title` bắt buộc.
#### 💡 Đề xuất Refactor:
```php
// Đoạn code được sửa lại chuẩn AAA và tận dụng đầy đủ IntegrationTestTrait...