2026-03-145 phút đọcVI
TDD với Cursor Agent
English title: TDD with Cursor Agent
Bài 12 trong chuỗi 15 bài hướng dẫn Cursor. Test trước, code sau — trong workflow Cursor. TDD (Test-Driven Development) với Cursor nghĩa là: bạn viết test (hoặc test case) trước; sau đó bạn nhờ Agent implement code để test pass; Agent có thể chạy test và lặp lại cho đến khi pass. Cursor Learn và Docs khuyến nghị cách làm này để Agent tạo code đúng ý và có thể verify. Bài này tóm tắt workflow và vài lưu ý.
Mở đầu: Test trước, code sau
Khi bạn bảo Agent "thêm function parseDate" mà không có test, Agent có thể viết code chạy được nhưng thiếu edge case hoặc sai contract. Nếu bạn viết test trước (vd. expect parseDate("2026-03-14") trả về object có year, month, day), rồi bảo Agent "implement function parseDate để các test này pass", Agent có mục tiêu rõ ràng và có thể chạy test để tự verify. Bạn giữ vai "định nghĩa đúng/sai" qua test; Agent giữ vai "implement và chạy test".
1. Đi sâu: Tại sao TDD với Agent
Tại sao chủ đề này quan trọng: Agent generate code dễ thiếu edge case hoặc hiểu lệch yêu cầu. Test trước = bạn định nghĩa "đúng" bằng test; Agent chỉ cần làm cho test pass. Giảm vòng lặp "sửa lại nhiều lần".
Hiểu sai thường gặp: Nhiều người để Agent viết cả test lẫn code — khi đó test có thể "vừa vặn" với implementation sai (test và code cùng sai). TDD đúng nghĩa: bạn viết test (hoặc spec test), Agent chỉ implement.
Bản chất đúng: Workflow: (1) Bạn viết test fail (red). (2) Bạn prompt Agent: "Implement [function/module] để các test sau pass. Không sửa test." (3) Agent sửa code, chạy test. (4) Nếu pass (green), bạn review diff và accept. (5) Nếu fail, iterate: chỉnh prompt hoặc thêm test case, rồi lặp. Rules có thể thêm: "When implementing to pass tests, do not modify the test code."
2. Khái niệm
- TDD: Test-Driven Development — viết test trước (red), implement để test pass (green), refactor nếu cần. Trong Cursor: bạn viết test, Agent implement.
- Verify: Agent chạy test (vd.
npm test) và báo pass/fail; bạn không cần tự chạy từng bước. - Chia bước: Feature lớn nên chia thành bước nhỏ, mỗi bước có test; Agent làm từng bước, mỗi bước verify trước khi sang bước tiếp.
3. Workflow khuyến nghị
- Viết test (red) — Ví dụ: mô tả function
parseDate(input: string)và 2–3 test case (valid date, invalid, edge case). Lưu vào file test. - Prompt Agent — "Implement parseDate in utils/date.ts so that these tests pass. Do not modify the test file." Đưa context @ file test và (nếu cần) file sẽ implement.
- Agent implement và chạy test — Agent sửa/thêm code, chạy
npm test(hoặc lệnh tương ứng). Bạn xem output. - Review diff (bài 13) — Accept nếu đúng; nếu test vẫn fail, chỉnh prompt hoặc bổ sung test rồi lặp lại.
- Refactor (tùy chọn) — Sau khi green, có thể prompt Agent refactor cho gọn, rồi chạy lại test để đảm bảo vẫn pass.
4. Ứng dụng
Sau bài này bạn đã biết: TDD với Agent = test trước, Agent implement và verify; không sửa test. Bài tiếp: Review diff và accept thay đổi an toàn — xem từng thay đổi, accept có chọn lọc.
Bài tiếp: Review diff và accept thay đổi an toàn (bài 13).