Hướng dẫn cài đặt Jest Testing cho ứng dụng Node.js

0 0 0

Người đăng: Vũ Tuấn

Theo Viblo Asia

Jest là một framework testing phổ biến được Facebook phát triển, giúp việc viết và chạy test cho ứng dụng JavaScript trở nên dễ dàng. Bài viết này sẽ hướng dẫn bạn cài đặt Jest trong dự án Node.js từ đầu.

Điều kiện tiên quyết

  • Node.js được cài đặt trên hệ thống của bạn
  • Một dự án Node.js hiện có hoặc một dự án mới

Bước 1: Khởi tạo dự án của bạn

Nếu bạn không có dự án hiện tại, hãy tạo một thư mục mới và khởi tạo nó:

mkdir my-node-project
cd my-node-project
npm init -y

Bước 2: Cài đặt Jest

Cài đặt Jest qua lệnh sau:

npm install --save-dev jest

Bước 3: Cấu hình Jest trong package.json

Cập nhật package.json để thêm cấu hình Jest và tập lệnh kiểm tra:

{ "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 một hàm mẫu để kiểm tra

Tạo một tập tin mới có tên là math.js:

// 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 test đầu tiên của bạn

Tạo một tệp thử nghiệm có tên là math.test.js:

// math.test.js
const { sum, multiply } = require('./math'); describe('Math functions', () => { test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); }); test('multiplies 3 * 4 to equal 12', () => { expect(multiply(3, 4)).toBe(12); });
});

Bước 6: Cấu hình Jest bổ sung (nếu cần thiết)

Tạo một tệp jest.config.js để cấu hình chi tiết hơn:

// jest.config.js
module.exports = { // Automatically clear mock calls and instances between every test clearMocks: true, // Indicates whether the coverage information should be collected while executing the test collectCoverage: true, // The directory where Jest should output its coverage files coverageDirectory: "coverage", // An array of regexp pattern strings used to skip coverage collection coveragePathIgnorePatterns: [ "/node_modules/" ], // The test environment that will be used for testing testEnvironment: "node", // The glob patterns Jest uses to detect test files testMatch: [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[tj]s?(x)" ]
};

Bước 7: Chạy thử nghiệm

Bây giờ bạn có thể chạy thử nghiệm bằng npm:

# Run all tests
npm test # Run tests in watch mode
npm run test:watch # Run tests with coverage report
npm test -- --coverage

Một số công cụ so khớp Jest thường dùng

Sau đây là một số công cụ so khớp Jest thường được sử dụng:

// Exact equality
expect(value).toBe(2); // Object matching
expect(data).toEqual({id: 1}); // Truthiness
expect(value).toBeTruthy();
expect(value).toBeFalsy(); // Numbers
expect(value).toBeGreaterThan(3);
expect(value).toBeLessThan(5); // Strings
expect(string).toMatch(/pattern/); // Arrays
expect(array).toContain(item); // Exceptions
expect(() => { throw new Error('Wrong!');
}).toThrow('Wrong!');

Kiểm tra mã không đồng bộ

Jest xử lý việc kiểm tra mã không đồng bộ một cách khéo léo:

// Testing Promises
test('async test', () => { return fetchData().then(data => { expect(data).toBe('data'); });
}); // Using async/await
test('async test with async/await', async () => { const data = await fetchData(); expect(data).toBe('data');
});

Một số best practices về Jest

  1. Tổ chức tệp: Giữ 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
  1. Kiểm tra cô lập: Mỗi bài kiểm tra phải độc lập và không phụ thuộc vào các bài kiểm tra khác

  2. Mô tả có ý nghĩa: Sử dụng mô tả bài kiểm tra rõ ràng

 describe('User authentication', () => { test('should successfully log in with valid credentials', () => { // test code }); });
  1. Thiết lập và Tháo dỡ: Sử dụng các phương pháp vòng đời của Jest khi cần thiết
 beforeAll(() => { // Setup before all tests }); afterEach(() => { // Cleanup after each test });

Vậy là bạn đã có môi trường thử nghiệm Jest được cấu hình đầy đủ trong ứng dụng Node.js của mình. Hy vọng bạn thấy thông tin trong bài viết vừa rồi là hữu ích.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 396

- vừa được xem lúc

Hướng dẫn làm bot Facebook messenger cho tài khoản cá nhân

Giới thiệu. Trong bài viết trước thì mình có hướng dẫn các bạn làm chatbot facebook messenger cho fanpage. Hôm nay mình sẽ hướng dẫn các bạn tạo chatbot cho một tài khoản facebook cá nhân. Chuẩn bị.

0 0 190

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 2

trong phần 1 mình đã giới thiệu về puppeteer và tạo được 1 project cùng một số file đầu tiên để các bạn có thể crawl dữ liệu từ một trang web bất kỳ. Bài này mình sẽ tiếp nối bài viết trước để hoàn thiện seri này.

0 0 73

- vừa được xem lúc

Điều React luôn giữ kín trong tim

■ Mở đầu. Ngồi viết bài khi đang nghĩ vu vơ chuyện con gà hay quả trứng có trước, mình phân vân chưa biết sẽ chọn chủ đề gì để chúng ta có thể cùng nhau bàn luận.

0 0 59

- vừa được xem lúc

Gửi Mail với Nodejs và AWS SES

AWS SES. AWS SES là gì.

0 0 83

- vừa được xem lúc

Crawl website sử dụng Node.js và Puppeteer - phần 1

Bài viết này mình sẽ giới thiệu cho các bạn craw dữ liệu của web site sử dụng nodejs và Puppeteer. .

0 0 164