IT nói tiếng người
Kiểm thửMốc 1 · Nói chuyện được

🔗 Integration Test là gì?

Thử xem các phần ghép với nhau có chạy không.

1
Hiểu nó là gì

Integration Test kiểm tra nhiều thành phần làm việc chung: code gọi database, gọi API hay đọc file có đúng như kỳ vọng không.

Nói theo đời thường:
Linh kiện nào cũng tốt chưa chắc lắp vào là chạy; đây là lúc cắm điện cả mạch xem có sáng thật không.

⚠ Chỗ ẩn dụ này hỏng

Cắm điện cả mạch thì đèn sáng hoặc không sáng, biết ngay. Integration test hỏng thì thường không biết hỏng ở mảnh nào.

Đó là cái giá: càng ghép nhiều thành phần, test càng giống thật nhưng càng khó lần ra nguyên nhân. Unit test đỏ là biết ngay hàm nào; integration test đỏ là bắt đầu cuộc điều tra.

2
Code trông thế nào
test('lưu đơn hàng xuống database', async () => {
  const don = await taoDonHang({ ma:'DH01', tien:300 })
  const trongDb = await db.donHang.findOne({ ma:'DH01' })
  expect(trongDb.tien).toBe(300)
})

Có database thật (thường là bản dựng riêng cho test), không mock.

3
Khi nào bạn dùng nó

✓ Dùng khi

  • Cần chắc code nói chuyện đúng với database hoặc API
  • Chỗ ghép nối hay hỏng trong quá khứ
  • Unit test đã xanh hết mà thực tế vẫn sai

✗ Đừng dùng khi

  • Logic thuần tính toán (unit test rẻ hơn nhiều)
  • Chưa có môi trường test riêng, sợ đụng dữ liệu thật
Chưa cần biết: testcontainers, dựng database tạm trong Docker, seed dữ liệu tự động.
Để 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 của bạn xanh ở máy vì database local còn dữ liệu cũ, còn máy đồng nghiệp thì đỏ.
4
Đi đâu tiếp

🧪 Thử 2 phút, không cần cài gì

Không cần code: mở F12 → Network trên một trang thương mại điện tử, bấm “thêm vào giỏ”. Bạn đang nhìn đúng chỗ mà integration test kiểm tra — lời gọi giữa giao diện và server.

⚖ Hay bị nhầm với thuật ngữ khác

← Xem tất cả thuật ngữ