✅ Assertion là gì?
Câu lệnh phán xử đúng hay sai.
1
Hiểu nó là gì
Assertion là chỗ test so sánh kết quả thực tế với kết quả mong đợi: khớp thì test pass, lệch thì test fail.
Nói theo đời thường:
Như người chấm thi đối chiếu bài làm với đáp án: giống thì cho điểm, khác thì gạch.
Như người chấm thi đối chiếu bài làm với đáp án: giống thì cho điểm, khác thì gạch.
⚠ Chỗ ẩn dụ này hỏng
Người chấm thi biết linh động: viết “Hà Nội” hay “hà nội” đều cho đúng. Assertion thì so từng ký tự.
Thừa một dấu cách, khác hoa thường, ngày ghi 01/09 thay vì 1/9 — đều fail. Và ngược lại, assertion lỏng quá (chỉ cần “có chữ Hà”) thì test xanh cả khi sản phẩm sai. Chọn độ chặt của assertion là cả một nghề.
2
Code trông thế nào
// Quá chặt — đổi một dấu cách là đỏ await expect(el).toHaveText('Chào Na, bạn có 3 đơn') // Vừa đủ — kiểm tra đúng thứ mình quan tâm await expect(el).toContainText('3 đơn')
Kiểm tra đúng thứ bạn quan tâm, đừng kiểm tra cả những thứ tình cờ nằm cạnh.
3
Khi nào bạn dùng nó
✓ Dùng khi
- Mọi ca test — không có assertion thì không phải test
- Cần chốt “thế nào là đạt” thành thứ máy hiểu được
✗ Đừng dùng khi
- Chưa biết kết quả đúng là gì (đi hỏi cho ra trước đã)
- Kiểm tra cả những thứ không liên quan tới ca test này
Chưa cần biết: soft assertion, snapshot testing, matcher tự viết.
Để dành tới Mốc 3 — Tự sửa được khi nó hỏng: Test đỏ trên CI mà xanh ở máy bạn, và bạn biết bắt đầu tìm từ đâu.
Dấu hiệu bạn đã cần học nó: Khi test đỏ ở dòng đầu và bạn muốn nó chạy tiếp để xem còn sai chỗ nào nữa.
4
Đi đâu tiếp
- Test ReportNơi hiện ra assertion nào trượt và trượt vì sao.
- Visual TestingKhi thứ cần kiểm tra là hình ảnh chứ không phải chữ.
- Test CasePhần “mong đợi” của ca test chính là assertion.
🧪 Thử 2 phút, không cần cài gì
F12 → Console:console.assert(1 + 1 === 3, 'sai rồi')
Đó là assertion trần trụi nhất: đúng thì im lặng, sai thì kêu lên.