1. Tổng quan
- Chia sẻ cách xây dựng kiểm thử đơn vị theo phương pháp Sociable Test (kết nối với DB thật)
- ORM như TypeORM có vấn đề về tính an toàn kiểu, nên cần kiểm thử bằng DB thật
2. Solitary Test vs Sociable Test
- So sánh
- Solitary Test thay thế phụ thuộc bằng Mock để kiểm thử độc lập (nhanh nhưng có thể khác với môi trường thực tế)
- Sociable Test kiểm thử cùng với phụ thuộc bên ngoài thực tế (DB) để đảm bảo độ tin cậy (chậm hơn nhưng phát hiện sớm các vấn đề thực tế)
- Giới hạn của Solitary Test
- Chỉ với mocking thì khó phát hiện đầy đủ các vấn đề tương tác với DB thật
- Vấn đề kiểm tra kiểu của TypeORM có thể dẫn đến lỗi runtime
- Sự cần thiết của Sociable Test
- Có thể xác minh các vấn đề về truy vấn phức tạp, transaction và thiết lập quan hệ thông qua tích hợp với DB thật
- Thiết lập cơ sở dữ liệu kiểm thử để thực hiện kiểm thử cô lập dữ liệu theo phương thức transaction
- Ưu điểm và điểm cần lưu ý của DB Sociable Test
- Ưu điểm: kiểm thử có độ tin cậy cao, phát hiện sớm các vấn đề liên quan đến ORM, kiểm tra sự không khớp schema
- Lưu ý: tốc độ kiểm thử chậm hơn, thiết lập môi trường phức tạp, cần quản lý transaction
3. Triển khai kiểm thử tích hợp DB trong NestJS
- Thiết lập
- Cấu hình kết nối DB kiểm thử dùng MySQL
- Sử dụng transaction để rollback các thay đổi của từng bài kiểm thử
- Tận dụng vòng đời của framework kiểm thử Jest
- Sử dụng
beforeAll / beforeEach / afterEach / afterAll
- Thiết lập khởi tạo và kết nối DB, bắt đầu và kết thúc transaction
4. Kết luận
- Khi viết kiểm thử đơn vị, nên kết hợp Solitary Test và Sociable Test một cách phù hợp
- Sociable Test có thể rất hữu ích để ngăn ngừa các vấn đề liên quan đến ORM
Chưa có bình luận nào.