Kiểm tra các hàm và phương thức với Chai

Trong bài viết thứ 3 của series "Node.js, Mocha và Chai", chúng ta sẽ tìm hiểu cách kiểm tra các hàm và phương thức sử dụng Chai. Chai là một thư viện khẳng định mạnh mẽ trong việc kiểm tra các giá trị và kết quả của mã JavaScript.

Kiểm tra hàm ném ra ngoại lệ đúng

Để kiểm tra các ngoại lệ, chúng ta có thể sử dụng khẳng định throw được cung cấp bởi Chai. Khẳng định này cho phép chúng ta chỉ định loại ngoại lệ cần ném ra và bất kỳ chi tiết bổ sung nào chúng ta muốn xác nhận. Bằng cách bao gồm khẳng định này trong các trường hợp kiểm thử, chúng ta có thể đảm bảo rằng các hàm của chúng ta hoạt động đúng và xử lý các điều kiện lỗi một cách thích hợp.

Hãy xem xét một ví dụ, trong đó chúng ta có một hàm chia hai số. Chúng ta muốn đảm bảo rằng hàm ném ra một ngoại lệ khi chia cho số không. Chúng ta có thể viết một trường hợp kiểm thử sử dụng khẳng định throw của Chai để kiểm tra xem hàm có ném ra đúng ngoại lệ DivideByZeroError khi chia cho số không hay không.

const { expect } = require('chai');

function divide(a, b) {
  if (b === 0) {
    throw new Error('DivideByZeroError');
  }
  return a / b;
}

describe('divide', () => {
  it('nên ném ra DivideByZeroError khi chia cho số không', () => {
    expect(() => divide(10, 0)).to.throw('DivideByZeroError');
  });

  it('nên trả về kết quả chính xác khi chia hai số', () => {
    expect(divide(10, 5)).to.equal(2);
  });
});

Trong ví dụ trên, chúng ta sử dụng khẳng định to.throw để xác nhận rằng hàm divide ném ra ngoại lệ DivideByZeroError khi chia cho số không. Khẳng định được bao bọc trong một hàm để có thể bắt ngoại lệ và thực hiện các kiểm tra cần thiết.

Bằng cách bao gồm các bài kiểm tra cho việc ném ra ngoại lệ đúng, chúng ta có thể đảm bảo rằng các hàm của chúng ta xử lý các điều kiện lỗi một cách chính xác và cung cấp phản hồi có ý nghĩa khi xảy ra tình huống không mong muốn. Điều này giúp nâng cao chất lượng và độ tin cậy tổng thể của mã nguồn.

Tóm lại, việc kiểm tra các hàm ném ra ngoại lệ là một khía cạnh quan trọng của kiểm thử phần mềm. Với khẳng định throw của Chai, chúng ta có thể dễ dàng xác nhận rằng các hàm ném ra các ngoại lệ mong đợi khi cần thiết. Bằng cách kết hợp các bài kiểm tra này vào chiến lược kiểm thử của chúng ta, chúng ta có thể nâng cao tính ổn định của ứng dụng và cung cấp trải nghiệm người dùng tốt hơn.

 

Kiểm tra các phương thức của đối tượng

Để kiểm tra các phương thức của một đối tượng, chúng ta có thể sử dụng các khẳng định được cung cấp bởi các framework kiểm thử như Mocha và Chai. Các khẳng định này cho phép chúng ta đưa ra các khẳng định về các thuộc tính và hành vi của đối tượng.

Hãy xem xét một ví dụ trong đó chúng ta có một đối tượng được gọi là calculator với các phương thức thực hiện phép cộng, trừ, nhân và chia. Chúng ta muốn đảm bảo rằng các phương thức này trả về kết quả chính xác. Chúng ta có thể viết các ca kiểm thử sử dụng các khẳng định của Chai để xác minh hành vi của các phương thức này.

const { expect } = require('chai');

const calculator = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
  multiply: (a, b) => a * b,
  divide: (a, b) => a / b,
};

describe('calculator', () => {
  it('nên trả về tổng chính xác khi thực hiện phép cộng hai số', () => {
    expect(calculator.add(5, 3)).to.equal(8);
  });

  it('nên trả về hiệu chính xác khi thực hiện phép trừ hai số', () => {
    expect(calculator.subtract(5, 3)).to.equal(2);
  });

  it('nên trả về tích chính xác khi thực hiện phép nhân hai số', () => {
    expect(calculator.multiply(5, 3)).to.equal(15);
  });

  it('nên trả về thương chính xác khi thực hiện phép chia hai số', () => {
    expect(calculator.divide(6, 3)).to.equal(2);
  });
});

Trong ví dụ trên, chúng ta sử dụng khẳng định expect của Chai để xác minh rằng các phương thức của đối tượng calculator trả về kết quả như mong đợi. Mỗi ca kiểm thử tập trung vào một phương thức cụ thể và kiểm tra xem nó trả về kết quả đúng cho một đầu vào cụ thể.

Bằng cách chạy các ca kiểm thử này, chúng ta có thể đảm bảo rằng các phương thức của đối tượng calculator hoạt động đúng và cung cấp kết quả chính xác.

Ngoài việc kiểm tra giá trị trả về của các phương thức, chúng ta cũng có thể sử dụng các khẳng định để xác minh các thuộc tính và hành vi khác của đối tượng. Chai cung cấp một loạt các khẳng định cho phép chúng ta thực hiện các loại khẳng định khác nhau trên đối tượng, như kiểm tra giá trị thuộc tính, xác minh việc gọi phương thức, và nhiều hơn nữa.

Bằng cách kiểm tra kỹ lưỡng các phương thức của một đối tượng, chúng ta có thể đảm bảo tính chính xác và đáng tin cậy của chúng, đóng góp vào chất lượng tổng thể của mã nguồn của chúng ta.