Tên test phải trả lời được "chức năng nào, trong điều kiện nào, kỳ vọng gì" mà không cần mở code ra đọc.
ts
// weak: does not say what broke
it('works', ...)
it('test discount', ...)
// clear: subject - condition - expectation
it('applies 10% discount when order total exceeds 500k', ...)
it('rejects the coupon when it has already expired', ...)Thân test giữ 3 khối rõ ràng, cách nhau bằng dòng trống: chuẩn bị dữ liệu, gọi hành động, kiểm tra kết quả (arrange - act - assert).
Hai lỗi cấu trúc hay gặp:
- Lồng
describequá sâu. Ba bốn tầngbeforeEachkhiến người đọc phải cuộn ngược để biết biếnuserđang có giá trị gì. Ưu tiên viết phẳng, dữ liệu tạo ngay trong test hoặc qua một hàm helper gọi tường minh. - Một test assert 10 thứ. Khi đỏ chỉ biết dòng assert đầu tiên hỏng. Tách theo từng hành vi, mỗi test một lý do để đỏ.
Tiêu chí đánh giá: đọc danh sách tên test phải ra được đặc tả của module đó.