Hướng Dẫn Chi Tiết Cài Đặt Jest Testing Cho Ứng Dụng Node.js
Jest là một framework kiểm tra mã nguồn mở được phát triển bởi Facebook, giúp lập trình viên dễ dàng viết và chạy các bài kiểm tra cho ứng dụng JavaScript. Bài viết này sẽ hướng dẫn bạn từng bước cài đặt Jest trong dự án Node.js của mình. Hãy bắt đầu ngay để nâng cao chất lượng mã nguồn của bạn!
Điều Kiện Tiên Quyết
Trước khi bắt đầu, đảm bảo rằng bạn đã cài đặt:
- Node.js trên hệ thống của bạn.
- Một dự án Node.js, bạn có thể sử dụng dự án hiện có hoặc tạo mới.
Bước 1: Khởi Tạo Dự Án Node.js Mới
Nếu bạn chưa có một dự án Node.js, hãy tạo một thư mục mới và khởi tạo nó:
bash
mkdir my-node-project
cd my-node-project
npm init -y
Bước 2: Cài Đặt Jest
Cài đặt Jest bằng cách sử dụng lệnh sau:
bash
npm install --save-dev jest
Bước 3: Cấu Hình Jest Trong package.json
Bạn cần cập nhật tệp package.json
để thêm cấu hình cho Jest và các tập lệnh kiểm tra:
json
{
"scripts": {
"test": "jest",
"test:watch": "jest --watch"
},
"jest": {
"testEnvironment": "node",
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"moduleFileExtensions": ["js", "json"],
"testMatch": ["**/__tests__/**/*.js", "**/?(*.)+(spec|test).js"],
"verbose": true
}
}
Bước 4: Tạo Hàm Mẫu Để Kiểm Tra
Tạo một tệp mới đặt tên là math.js
với các hàm toán học đơn giản:
javascript
// math.js
function sum(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
module.exports = {
sum,
multiply
};
Bước 5: Viết Bài Kiểm Tra Đầu Tiên
Tạo một tệp thử nghiệm với tên là math.test.js
:
javascript
// math.test.js
const { sum, multiply } = require('./math');
describe('Các hàm toán học', () => {
test('1 + 2 phải bằng 3', () => {
expect(sum(1, 2)).toBe(3);
});
test('3 * 4 phải bằng 12', () => {
expect(multiply(3, 4)).toBe(12);
});
});
Bước 6: Cấu Hình Jest Bổ Sung
Nếu bạn cần cấu hình chi tiết hơn, hãy tạo một tệp có tên jest.config.js
:
javascript
// jest.config.js
module.exports = {
clearMocks: true,
collectCoverage: true,
coverageDirectory: "coverage",
coveragePathIgnorePatterns: [
"/node_modules/"
],
testEnvironment: "node",
testMatch: [
"**/__tests__/**/*.[jt]s?(x)",
"**/?(*.)+(spec|test).[tj]s?(x)"
]
};
Bước 7: Chạy Bài Kiểm Tra
Bây giờ bạn có thể chạy các bài kiểm tra với npm:
bash
# Chạy tất cả các bài kiểm tra
npm test
# Chạy bài kiểm tra trong chế độ theo dõi
npm run test:watch
# Chạy bài kiểm tra với báo cáo độ phủ
npm test -- --coverage
Một Số Công Cụ So Khớp Thường Dùng Trong Jest
Dưới đây là một số cú pháp kiểm tra cơ bản mà bạn có thể sử dụng:
javascript
// Kiểm tra sự bằng nhau chính xác
expect(value).toBe(2);
// So khớp đối tượng
expect(data).toEqual({id: 1});
// Tính đúng đắn
expect(value).toBeTruthy();
expect(value).toBeFalsy();
// Số
expect(value).toBeGreaterThan(3);
expect(value).toBeLessThan(5);
// Chuỗi
expect(string).toMatch(/pattern/);
// Mảng
expect(array).toContain(item);
// Ngoại lệ
expect(() => {
throw new Error('Sai!');
}).toThrow('Sai!');
Kiểm Tra Mã Không Đồng Bộ
Jest hỗ trợ kiểm tra mã không đồng bộ một cách hiệu quả:
javascript
// Kiểm tra Promises
test('kiểm tra bất đồng bộ', () => {
return fetchData().then(data => {
expect(data).toBe('data');
});
});
// Sử dụng async/await
test('kiểm tra bất đồng bộ với async/await', async () => {
const data = await fetchData();
expect(data).toBe('data');
});
Một Số Best Practices Khi Sử Dụng Jest
-
Tổ Chức Tệp: Đặt các tệp thử nghiệm gần với mã mà chúng đang thử nghiệm.
src/ ├── math.js └── __tests__/ └── math.test.js
-
Kiểm Tra Cô Lập: Đảm bảo mỗi bài kiểm tra hoạt động độc lập, không phụ thuộc vào nhau.
-
Mô Tả Có Ý Nghĩa: Sử dụng mô tả rõ ràng cho các bài kiểm tra của bạn.
javascriptdescribe('Đăng nhập người dùng', () => { test('phải đăng nhập thành công với thông tin hợp lệ', () => { // mã kiểm tra }); });
-
Thiết Lập và Tháo Dỡ: Sử dụng các phương pháp vòng đời của Jest để thiết lập và dọn dẹp khi cần thiết.
javascriptbeforeAll(() => { // Thiết lập trước tất cả các kiểm tra }); afterEach(() => { // Dọn dẹp sau mỗi kiểm tra });
Bài viết này đã hướng dẫn bạn từng bước để thiết lập môi trường thử nghiệm với Jest trong ứng dụng Node.js của bạn. Hy vọng những thông tin này sẽ giúp bạn có thể nâng cao quy trình phát triển và kiểm thử mã nguồn của mình một cách hiệu quả hơn.
source: viblo