13 KiB
Chỉ Mục Tài Liệu Kiểm Thử
Tạo ngày: 2026-04-11
Tổng số dòng tài liệu: 3.014
Tổng số tệp được phân tích: 17 tệp nguồn chưa có kiểm thử
📚 Các Tệp Tài Liệu
1. README_TEST_COVERAGE.md (9,1 KB)
Bắt đầu từ đây để có cái nhìn tổng quan đầy đủ và lộ trình thực hiện.
Nội dung:
- Tổng quan về cả 4 tệp tài liệu
- Tổ chức tệp theo mô-đun (Inquiries, Leads, Reviews)
- Mức độ ưu tiên kiểm thử (Quan trọng 🔴, Cao 🟡, Trung bình 🟢)
- Lộ trình kiểm thử 3 tuần kèm ước tính thời gian
- Các mẫu kiểm thử quan trọng cho từng loại tệp
- Các công thức then chốt cần xác minh trong kiểm thử
- Dữ liệu kiểm thử chung và câu lệnh import
- Hướng dẫn xử lý sự cố
- Hướng dẫn khởi động nhanh
Thời gian đọc: 5–10 phút
2. TEST_COVERAGE_ANALYSIS.md (55 KB)
Tài liệu tham khảo đầy đủ với tất cả 17 tệp nguồn và triển khai chi tiết.
Nội dung:
-
Tóm tắt điều hành
-
PHẦN 1: MÔ-ĐUN INQUIRIES (4 tệp)
- PrismaInquiryRepository (146 dòng)
- InquiriesController (120 dòng)
- CreateInquiryDto (20 dòng)
- ListInquiriesDto (20 dòng)
-
PHẦN 2: MÔ-ĐUN LEADS (6 tệp)
- PrismaLeadRepository (151 dòng)
- LeadScore ValueObject (16 dòng)
- LeadsController (126 dòng)
- CreateLeadDto (35 dòng)
- ListLeadsDto (30 dòng)
- UpdateLeadStatusDto (14 dòng)
-
PHẦN 3: MÔ-ĐUN REVIEWS (5 tệp)
- PrismaReviewRepository (162 dòng)
- Rating ValueObject (16 dòng)
- ReviewsController (122 dòng)
- CreateReviewDto (26 dòng)
- ListReviewsDto (42 dòng)
-
PHẦN 4: MẪU KIỂM THỬ THAM KHẢO (3 tệp kiểm thử)
- Mẫu kiểm thử CreateInquiryHandler
- Mẫu kiểm thử CreateLeadHandler
- Mẫu kiểm thử ReviewsController
-
Bảng tóm tắt tất cả tệp
-
Các ưu tiên kiểm thử
-
Mục tiêu độ bao phủ kiểm thử
Thời gian đọc: 30–45 phút để xem xét đầy đủ
Cách sử dụng:
- Tìm tệp bạn muốn kiểm thử
- Đọc toàn bộ phần triển khai
- Xem mục "Key Methods to Test"
- Kiểm tra mục "Test Scenarios"
- Đối chiếu với các mẫu trong TEST_TEMPLATES.md
3. TEST_COVERAGE_QUICK_REFERENCE.md (9,1 KB)
Danh sách kiểm tra và tài liệu tra cứu nhanh.
Nội dung:
-
Tổng quan 17 tệp kèm số dòng
-
Các kịch bản kiểm thử nhanh theo loại:
- Repositories (3 tệp) — danh sách kiểm tra + ghi chú cụ thể
- Value Objects (2 tệp) — phạm vi xác thực
- Controllers (2 tệp) — danh sách kiểm tra endpoint
- DTOs (10 tệp) — quy tắc xác thực
-
Ma trận ưu tiên kiểm thử:
- Quan trọng: 4 mục (logic nghiệp vụ)
- Cao: 5 mục (toàn vẹn dữ liệu)
- Trung bình: 3 mục (xác thực/guards)
-
Khuyến nghị thứ tự thực thi kiểm thử
-
Mẫu thiết lập mock (4 ví dụ)
-
Các công thức then chốt cần xác minh
-
Tài liệu tham chiếu vị trí tệp
Thời gian đọc: 3–5 phút để tra cứu
Cách sử dụng:
- Tìm loại tệp bạn đang kiểm thử
- Kiểm tra danh sách kiểm tra nhanh
- Chuyển đến mục chi tiết trong Analysis để biết thêm thông tin
- Sao chép mẫu mock từ tệp này
4. TEST_TEMPLATES.md (16 KB)
Các mẫu code sẵn sàng sử dụng cho tất cả loại tệp.
Nội dung:
-
Mẫu kiểm thử Repository
- Thiết lập với Prisma được mock
- Kiểm thử findById()
- Kiểm thử save()
- Kiểm thử findByListing() với phân trang
-
Mẫu kiểm thử Value Object
- Kiểm thử create() với giá trị hợp lệ
- Kiểm thử giá trị biên
- Kiểm thử giá trị không hợp lệ
- Kiểm thử thông báo lỗi
- Kiểm thử getters
-
Mẫu kiểm thử DTO
- Kiểm thử xác thực trường bắt buộc
- Kiểm thử trường tùy chọn
- Kiểm thử ràng buộc trường (email, phạm vi)
- Kiểm thử chuyển đổi kiểu dữ liệu
-
Mẫu kiểm thử Controller
- Thiết lập với bus được mock
- Kiểm thử điều phối lệnh (command dispatch)
- Kiểm thử ánh xạ tham số
- Kiểm thử xử lý null
- Kiểm thử giá trị mặc định
-
Các kiểm thử trợ giúp
- Kiểm thử tính toán phân trang
- Kiểm thử công thức tổng hợp
- Kiểm thử phân trang DTO
Thời gian đọc: 10–15 phút trong khi viết kiểm thử
Cách sử dụng:
- Sao chép mẫu phù hợp cho loại tệp của bạn
- Dán vào tệp kiểm thử
- Thay thế tên chung bằng tên tệp cụ thể của bạn
- Cập nhật các import và dữ liệu kiểm thử
- Chạy và xác minh kiểm thử vượt qua
🎯 Điều Hướng Nhanh Theo Nhiệm Vụ
"Tôi muốn hiểu những gì cần kiểm thử"
→ Bắt đầu với README_TEST_COVERAGE.md (5 phút)
→ Sau đó TEST_COVERAGE_QUICK_REFERENCE.md (3 phút)
"Tôi muốn viết kiểm thử cho một tệp cụ thể"
→ Tìm tệp trong TEST_COVERAGE_QUICK_REFERENCE.md
→ Đọc triển khai chi tiết trong TEST_COVERAGE_ANALYSIS.md
→ Sao chép mẫu từ TEST_TEMPLATES.md
→ Điều chỉnh mẫu theo tệp của bạn
"Tôi muốn hiểu một thành phần cụ thể"
→ Tra cứu tệp trong TEST_COVERAGE_ANALYSIS.md
→ Tìm mục "Key Methods to Test"
→ Tìm mục "Test Scenarios"
→ Kiểm tra TEST_TEMPLATES.md để xem mẫu
"Tôi muốn công thức và phép tính"
→ TEST_COVERAGE_QUICK_REFERENCE.md — "Key Formulas to Verify"
→ TEST_TEMPLATES.md — Aggregation Test Helper
→ TEST_COVERAGE_ANALYSIS.md — Mục repo cụ thể
"Tôi cần ví dụ thiết lập mock"
→ TEST_COVERAGE_QUICK_REFERENCE.md — Mock Setup Template
→ TEST_TEMPLATES.md — Phần đầu tiên cho mỗi loại
📋 17 Tệp Tổng Quan
Inquiries (4 tệp)
| Tệp | Loại | Kiểm thử chính |
|---|---|---|
| prisma-inquiry.repository.ts | Repository | Phân trang, quan hệ |
| inquiries.controller.ts | Controller | 4 endpoint, guards |
| create-inquiry.dto.ts | DTO | 3 xác thực |
| list-inquiries.dto.ts | DTO | Xác thực phân trang |
Leads (6 tệp)
| Tệp | Loại | Kiểm thử chính |
|---|---|---|
| prisma-lead.repository.ts | Repository | Tổng hợp thống kê |
| lead-score.vo.ts | ValueObject | Phạm vi 0–100 |
| leads.controller.ts | Controller | 5 endpoint, role guard |
| create-lead.dto.ts | DTO | 6 xác thực |
| list-leads.dto.ts | DTO | Enum trạng thái |
| update-lead-status.dto.ts | DTO | Xác thực trạng thái |
Reviews (5 tệp)
| Tệp | Loại | Kiểm thử chính |
|---|---|---|
| prisma-review.repository.ts | Repository | Thống kê phân phối |
| rating.vo.ts | ValueObject | Chỉ số nguyên 1–5 |
| reviews.controller.ts | Controller | 5 endpoint, xác thực hỗn hợp |
| create-review.dto.ts | DTO | 4 xác thực |
| list-reviews.dto.ts | DTO | 2 DTO, phân trang |
⏱️ Ước Tính Thời Gian
Theo Loại Tệp
- Value Objects (2 tệp): 30–45 phút
- DTOs (10 tệp): 2–3 giờ (sử dụng mẫu)
- Controllers (2 tệp): 1,5–2 giờ
- Repositories (3 tệp): 2,5–3,5 giờ
Tổng cộng: 9–14 giờ
Thứ Tự Khuyến Nghị
- Value Objects (nhanh nhất, xây dựng sự tự tin)
- DTOs (nhanh, lặp lại nhiều tệp)
- Controllers (độ phức tạp trung bình)
- Repositories (phức tạp nhất, nên làm cuối cùng)
🔍 Mỗi Tệp Kiểm Thử Những Gì
Value Objects
-
LeadScore.vo
- ✓ Phạm vi hợp lệ 0–100
- ✓ Từ chối giá trị không hợp lệ
- ✓ Thông báo lỗi bằng tiếng Việt
-
Rating.vo
- ✓ Chỉ số nguyên hợp lệ 1–5
- ✓ Từ chối 0, 6, số thập phân
- ✓ Thông báo lỗi bằng tiếng Việt
DTOs
-
Pagination DTOs (4 tệp)
- ✓ Xác thực page/limit
- ✓ Chuyển đổi kiểu dữ liệu
- ✓ Giá trị mặc định
-
Status DTOs (2 tệp)
- ✓ Xác thực enum
- ✓ Chỉ chấp nhận trạng thái hợp lệ
-
Create DTOs (4 tệp)
- ✓ Xác thực trường bắt buộc
- ✓ Xử lý trường tùy chọn
- ✓ Ràng buộc trường (email, độ dài, phạm vi)
Controllers
-
InquiriesController
- ✓ 4 endpoint với điều phối chính xác
- ✓ Xác thực JWT
- ✓ Guards dựa trên vai trò (AGENT)
-
LeadsController
- ✓ 5 endpoint với điều phối chính xác
- ✓ Role guard ở cấp class (AGENT)
- ✓ Xử lý trường tùy chọn
-
ReviewsController
- ✓ 5 endpoint với điều phối chính xác
- ✓ Xác thực hỗn hợp (một số endpoint công khai)
- ✓ Xác minh quyền sở hữu của người dùng
Repositories
-
PrismaInquiryRepository
- ✓ CRUD: findById, save, markAsRead
- ✓ Phân trang: findByListing, findByAgent
- ✓ Tổng hợp: countUnreadByAgent
- ✓ Ánh xạ dữ liệu: toDomain
-
PrismaLeadRepository
- ✓ CRUD: findById, save, update, delete
- ✓ Phân trang với bộ lọc trạng thái tùy chọn
- ✓ Tổng hợp: getStatsByAgent (tỷ lệ chuyển đổi, điểm trung bình)
- ✓ Ánh xạ dữ liệu kể cả LeadScore VO
-
PrismaReviewRepository
- ✓ CRUD: findById, findByUserAndTarget, save, delete
- ✓ Phân trang: findByTarget, findByUserId
- ✓ Tổng hợp: getStats (phân phối, điểm đánh giá trung bình)
- ✓ Ánh xạ dữ liệu kể cả Rating VO
📖 Ví Dụ Tham Khảo
Mẫu Kiểm Thử Đang Hoạt Động
Ba tệp kiểm thử đầy đủ được đưa vào làm tài liệu tham khảo:
-
create-inquiry.handler.spec.ts (99 dòng)
- Mock repository, EventBus, Prisma
- Kiểm thử đường đi thành công (happy path)
- Kiểm thử xử lý lỗi
- Xác minh phát sự kiện
-
create-lead.handler.spec.ts (121 dòng)
- Mẫu tương tự như create-inquiry
- Kiểm thử xử lý trường tùy chọn
- Kiểm thử xác thực ValueObject
-
reviews.controller.spec.ts (135 dòng)
- Kiểm thử endpoint controller
- Xác minh điều phối bus
- Xử lý tham số truy vấn
- Áp dụng giá trị mặc định
✅ Mẫu Danh Sách Kiểm Tra Kiểm Thử
Module: ___________________
File: _____________________
Imports:
- [ ] Framework kiểm thử đã được import
- [ ] Các class đã được import
- [ ] Mocks đã sẵn sàng
Setup:
- [ ] beforeEach tạo mocks mới
- [ ] Các dependency đã được inject
- [ ] Dữ liệu kiểm thử đã được chuẩn bị
Happy Path:
- [ ] Kiểm thử chức năng cơ bản
- [ ] Xác minh giá trị trả về
- [ ] Các phương thức được gọi đúng cách
Edge Cases:
- [ ] Xử lý Null/undefined
- [ ] Xử lý kết quả rỗng
- [ ] Giá trị biên
Error Cases:
- [ ] Từ chối đầu vào không hợp lệ
- [ ] Xác minh thông báo lỗi
- [ ] Xác thực guard
Cleanup:
- [ ] Mocks được làm sạch sau mỗi kiểm thử
- [ ] Không có sự phụ thuộc giữa các kiểm thử
💡 Mẹo Hay
- Bắt đầu nhỏ: Bắt đầu với Value Objects (đơn giản nhất)
- Sao chép-dán: Sử dụng mẫu, đừng viết từ đầu
- Kiểm thử sớm: Chạy kiểm thử ngay khi bạn viết
- Kỹ càng: Bao gồm cả đường đi thành công lẫn trường hợp lỗi
- Dùng lại: Tham khảo các kiểm thử hiện có trong codebase
- Xác minh công thức: Kiểm thử kỹ các phép tính số học
- Mock tất cả: Không truy cập cơ sở dữ liệu thực trong kiểm thử
- Kiểm thử Guards: Đừng quên xác thực/phân quyền
🆘 Cần Giúp Đỡ?
- Câu hỏi về cấu hình? → Xem README_TEST_COVERAGE.md
- Cần mẫu? → Xem TEST_TEMPLATES.md
- Chi tiết triển khai? → Xem TEST_COVERAGE_ANALYSIS.md
- Tra cứu nhanh? → Xem TEST_COVERAGE_QUICK_REFERENCE.md
- Ví dụ hiện có? → Kiểm tra các thư mục
__tests__của mô-đun
Phiên bản tài liệu: 1.0
Cập nhật lần cuối: 2026-04-11
Tổng tài liệu: 3.014 dòng trong 4 tệp
Độ bao phủ: 17 tệp nguồn chưa có kiểm thử (các mô-đun Inquiries, Leads, Reviews)