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>
2.8 KiB
2.8 KiB
Checklist Tự Thẩm Định Chất Lượng Unit Test (Verification Checklist)
Trước khi xuất bất kỳ file test nào cho người dùng, Agent BẮT BUỘC phải tự đối chiếu mã nguồn của mình qua 10 câu hỏi kiểm định nghiêm ngặt dưới đây:
[ ] 1. Tính Đơn Vị (Is it really a Unit Test?)
- Test có đang vô tình gọi Database thật hoặc gọi router HTTP không?
- Các dependency nặng (API, Queue, Mail, Storage, Repository) đã được Mock hoặc Fake 100% chưa?
[ ] 2. Cấu Trúc AAA Rõ Ràng (Is AAA clearly structured?)
- Các khối
// Arrange,// Act,// Assertcó được phân định rõ ràng bằng comment không? - Khối
// Actcó đúng là chỉ thực hiện 1 hành động duy nhất không?
[ ] 3. Mock Expectations Đầy Đủ (Are mock calls strictly verified?)
- Mọi mock method có được khai báo số lần gọi cụ thể (
->once(),->never(),->times(N)) thay vì bỏ trống không? - Các tham số truyền vào hàm mock có được kiểm tra qua
->with(...)hoặc->withArgs(...)không?
[ ] 4. Không Over-Mock DTO/Value Object (Are value objects kept real?)
- Các đối tượng DTO, Value Object, Collection có được tạo bằng instance thật thay vì mock không?
[ ] 5. Độ Phủ Ngoại Lệ & Kịch Bản Biên (Are edge cases & exceptions covered?)
- Đã có test case cho trường hợp ném ngoại lệ (Exception) chưa?
- Đã kiểm tra các trường hợp biên:
null, mảng rỗng[], số0, số âm chưa?
[ ] 6. Assertions Chặt Chẽ & Có Nghĩa (Are assertions meaningful?)
- Có sử dụng Strict Assertion (
assertSame,toBe) thay vì loose assertion không? - Có bị dính assertion rỗng kiểu
$this->assertTrue(true)không?
[ ] 7. Đặt Tên Chuẩn & Dễ Đọc (Are method names expressive?)
- Tên test method có thể hiện rõ "Hành động + Kết quả + Ngữ cảnh" không? (Ví dụ:
it_throws_exception_when_balance_is_insufficient)
[ ] 8. Cú Pháp Đúng Phiên Bản Framework (Is syntax version-accurate?)
- Nếu là PHPUnit 10+: Đã dùng Attribute
#[Test]và#[DataProvider]thay cho DocBlock cũ chưa? - Nếu là Pest: Đã dùng đúng cú pháp
describe(),it(),expect()chưa?
[ ] 9. Import Đầy Đủ & Namespace Chính Xác (Are imports complete?)
- Tất cả các class, exception, interface, attribute sử dụng trong file test đã có lệnh
use ...ở đầu file chưa? (Tránh lỗiClass not found).
[ ] 10. Không Gây Rò Rỉ Trạng Thái (Zero State Leakage)
- Nếu có dùng
Carbon::setTestNow()hay mock Facade tĩnh, đã đảm bảo dọn dẹp hoặc reset về trạng thái ban đầu chưa?