Viết Unit Test trong TypeScript: Sử dụng Jest, Mocha và Kết hợp với Chai và Sinon

Unit test là một phần quan trọng trong quá trình phát triển phần mềm, giúp đảm bảo tính chính xác và độ tin cậy của mã nguồn. Với TypeScript, bạn có thể viết unit test một cách dễ dàng và linh hoạt, sử dụng các framework phổ biến như Jest và Mocha, kết hợp với các thư viện assertion như Chai và thư viện mocking như Sinon.

Dưới đây là một hướng dẫn chi tiết về việc viết unit test trong TypeScript với các công cụ và thư viện này:

 

Jest

Jest là một framework phổ biến được sử dụng rộng rãi cho việc viết unit test trong TypeScript. Nó hỗ trợ cú pháp dễ hiểu và cung cấp nhiều tính năng mạnh mẽ như mocking, snapshot testing, và coverage reports.

Để bắt đầu viết unit test với Jest, bạn cần cài đặt Jest thông qua npm hoặc yarn bằng cách chạy lệnh sau:

npm install jest --save-dev

Sau đó, bạn có thể tạo các file test với đuôi .spec.ts hoặc .test.ts và viết các test case.

Ví dụ:

// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

// math.spec.ts
import { add } from './math';

test('add function adds two numbers correctly', () => {
  expect(add(2, 3)).toBe(5);
});

 

Mocha

Mocha là một framework test runner phổ biến, được sử dụng rộng rãi trong TypeScript và JavaScript. Nó cung cấp cú pháp đơn giản và linh hoạt, hỗ trợ nhiều loại kiểu test như unit test, integration test, và functional test.

Để sử dụng Mocha trong TypeScript, bạn cần cài đặt Mocha và Chai thông qua npm hoặc yarn bằng cách chạy lệnh sau:

npm install mocha chai --save-dev

Sau đó, bạn có thể tạo các file test và viết các test case.

Ví dụ:

// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

// math.spec.ts
import { expect } from 'chai';
import { add } from './math';

describe('add function', () => {
  it('should add two numbers correctly', () => {
    expect(add(2, 3)).to.equal(5);
  });
});

 

Chai

Chai là một thư viện assertion phổ biến trong việc viết unit test. Nó cung cấp cú pháp rõ ràng và linh hoạt, cho phép bạn xác nhận kết quả của mã nguồn. Bạn có thể sử dụng Chai cùng với Jest hoặc Mocha để viết các câu khẳng định trong các test case.

Ví dụ:

import { expect } from 'chai';
import { add } from './math';

it('add function should add two numbers correctly', () => {
  expect(add(2, 3)).to.equal(5);
});

 

Sinon

Sinon là một thư viện mocking và spy phổ biến, giúp mô phỏng và theo dõi hành vi trong các test case. Bạn có thể sử dụng Sinon cùng với Jest hoặc Mocha để mô phỏng và theo dõi các hoạt động trong đối tượng và hàm.

Ví dụ:

import { expect } from 'chai';
import { add } from './math';
import sinon from 'sinon';

it('add function should call console.log with the correct result', () => {
  const consoleSpy = sinon.spy(console, 'log');
  add(2, 3);
  expect(consoleSpy.calledWith(5)).to.be.true;
  consoleSpy.restore();
});

 

Kết hợp Jest hoặc Mocha với Chai và Sinon cho phép bạn xây dựng các unit test mạnh mẽ và linh hoạt trong TypeScript. Bằng cách sử dụng các phương thức và chức năng của Jest, Mocha, Chai và Sinon, bạn có thể đảm bảo tính chính xác và độ tin cậy của mã nguồn trong quá trình phát triển phần mềm.