Test code dùng database là thách thức — bạn cần hành vi dữ liệu thực tế mà không flaky hoặc chậm. Các cách tiếp cận gồm test database, database in-memory, transaction/rollback, và mock tầng dữ liệu — mỗi cái có đánh đổi riêng.
Thách thức
Code tương tác database cần test, nhưng database mang lại thách thức:
→ DB thật → thực tế nhưng CHẬM HƠN; cần SETUP và CLEANUP (state giữa các test)
→ state dùng chung → test có thể can thiệp lẫn nhau (phụ thuộc thứ tự, flakiness)
→ mock DB → nhanh nhưng có thể không bắt lỗi query/integration thật
→ Chọn một cách tiếp cận cân bằng tính thực tế, tốc độ và cô lập.
