+1

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

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.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí