𝗝𝗲𝘀𝘁 𝗧𝗲𝘀𝘁𝗶𝗻𝗴 𝗚𝘂𝗶𝗱𝗲 𝗳𝗼𝗿 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿𝘀
Kiểm thử giúp bạn phát hiện lỗi sớm. Nó cải thiện chất lượng mã nguồn. Nó cho phép bạn triển khai các tính năng mới mà không làm hỏng mã nguồn cũ.
Jest là một công cụ kiểm thử phổ biến cho JavaScript và Node.js. Nó được tạo ra bởi Meta. Nó hoạt động với TypeScript, React, Next.js và Express.js.
Tại sao nên sử dụng Jest?
- Cần rất ít thiết lập.
- Chạy các bài kiểm thử song song để tăng tốc độ.
- Bao gồm các công cụ giả lập (mocking tools).
- Hiển thị báo cáo độ bao phủ mã nguồn (code coverage).
- Cung cấp các thông báo lỗi rõ ràng.
Cách thiết lập Jest:
- Tạo một dự án Node.js:
npm init -y - Cài đặt Jest:
npm install --save-dev jest - Cập nhật scripts trong
package.jsonđể bao gồm"test": "jest" - Chạy kiểm thử với:
npm test
Viết một bài kiểm thử đơn giản:
Tạo sum.js:
function sum(a, b) {
return a + b;
}
module.exports = sum;
Tạo sum.test.js:
const sum = require("./sum");
test("adds two numbers", () => {
expect(sum(2, 3)).toBe(5);
});
Các công cụ Jest thiết yếu:
- Assertions (Khẳng định): Sử dụng
expect()vàtoBe()để kiểm tra giá trị. - Objects (Đối tượng): Sử dụng
toEqual()để so sánh các đối tượng hoặc mảng. - Organization (Tổ chức): Sử dụng
describe()để nhóm các bài kiểm thử liên quan. - Async (Bất đồng bộ): Jest xử lý các hàm bất đồng bộ một cách tự nhiên bằng cách sử dụng
await. - Mocks (Giả lập): Sử dụng
jest.fn()để mô phỏng các hàm. Điều này giúp các bài kiểm thử chạy nhanh hơn bằng cách tránh các lời gọi API thực tế hoặc truy cập cơ sở dữ liệu. - Hooks: Sử dụng
beforeEach()vàafterEach()để thiết lập hoặc dọn dẹp dữ liệu kiểm thử.
Đo lường sự thành công của bạn:
Chạy npx jest --coverage để xem báo cáo độ bao phủ. Điều này cho thấy những phần nào trong mã nguồn của bạn đang thiếu kiểm thử.
Kiểm thử API:
Sử dụng Supertest để kiểm thử các API endpoint. Bạn có thể kiểm tra mã trạng thái (status codes) mà không cần khởi động một máy chủ thực tế.
Snapshot Testing:
Sử dụng matchSnapshot() trong React. Điều này giúp bạn phát hiện các thay đổi UI không mong muốn bằng cách so sánh các bản render hiện tại với các phiên bản đã được lưu.
Các quy tắc thực hành tốt nhất (Best practices):
- Viết các bài kiểm thử mô tả kết quả đầu ra.
- Tránh kiểm thử cấu trúc mã nguồn nội bộ.
- Tránh sử dụng cơ sở dữ liệu thực trong các bài kiểm thử đơn vị (unit tests).
- Tập trung vào độ bao phủ có ý nghĩa.
Làm chủ Jest giúp bạn xây dựng phần mềm đáng tin cậy.