MN HKD

Tải ứng dụng phiên bản mới nhất để tạo sổ sách cho tất cả 4 nhóm hộ kinh doanh theo thông tư 152/2025/TT-BTC.

Tổng quan Jasmine

12/03/2024

1. Tổng quan

Jasmine là một framework kiểm thử JavaScript phổ biến, thiết kế để giúp xây dựng và thực hiện các bài kiểm thử đơn vị (unit tests) một cách dễ đọc và dễ bảo trì. Jasmine hỗ trợ mô hình BDD (Behavior-Driven Development), nơi mô tả ứng xử của mã nguồn được sử dụng như một cách để viết tests.

Dưới đây là một số đặc điểm và khái niệm quan trọng của Jasmine:

1.1. Suite và Spec:

  • Suite: Một nhóm các test cases được mô tả bằng hàm describe. Nó giúp tổ chức các tests thành các nhóm có ý nghĩa.
  • Spec: Một test case được mô tả bằng hàm it bên trong một describe. Mỗi it mô tả một điều kiện hoặc tính năng cụ thể cần kiểm thử.

1.2. Expectations:

Expectations được sử dụng để kiểm tra kết quả của một giả định hoặc một hành động. Jasmine cung cấp hàm expect để thực hiện các kiểm tra.

expect(result).toBe(expectedValue);

1.3. Matchers:

Matchers là các hàm được sử dụng trong expect, đại diện cho các loại kiểm tra khác nhau. Ví dụ: toBe, toEqual, toContain, toBeTruthy,…

expect(someValue).toBe(42);

1.4. Spy:

Spy là một đối tượng giả mạo (mock object) được sử dụng để theo dõi hàm và xem liệu chúng được gọi như mong đợi hay không.

spyOn(obj, 'methodName');

1.5. BeforeEach và AfterEach:

Các hàm beforeEachafterEach được sử dụng để thiết lập và dọn dẹp trạng thái trước và sau mỗi test case.

beforeEach(() => {
  // Setup code
});

afterEach(() => {
  // Teardown code
});

1.6. Pending Spec:

Một spec có thể được đánh dấu là chưa được triển khai bằng cách sử dụng xit hoặc pending trong it.

it('should do something', () => {
  pending('Not implemented yet');
  // or
  xit('should do something else', () => {
    // ...
  });

Jasmine cung cấp một cú pháp đơn giản và linh hoạt cho việc viết tests, giúp xây dựng và duy trì mã nguồn một cách hiệu quả. Nó đã trở thành một lựa chọn phổ biến trong cộng đồng phát triển JavaScript.

2. Ví dụ một testcase dùng Jasmine cơ bản

Dưới đây là một ví dụ về một testcase cơ bản sử dụng Jasmine. Trong ví dụ này, chúng ta sẽ kiểm thử một hàm đơn giản để tính tổng của hai số.

2.1. Tạo một tệp mới, ví dụ calculator.js, chứa hàm tính tổng:

// calculator.js
function add(a, b) {
  return a + b;
}

2.2. Tạo một tệp Jasmine spec để kiểm thử hàm add. Đặt tên tệp là calculator.spec.js:

// calculator.spec.js
describe('Calculator', () => {
  it('should add two numbers', () => {
    // Arrange
    const num1 = 5;
    const num2 = 7;

    // Act
    const result = add(num1, num2);

    // Assert
    expect(result).toBe(12);
  });
});

Trong ví dụ này:

  • describe: Mô tả một suite (nhóm) của các test cases với tên “Calculator”.
  • it: Mô tả một spec (test case) cụ thể với tên “should add two numbers”.
  • Trong it, chúng ta thực hiện các bước “Arrange”, “Act”, và “Assert”:
    • “Arrange”: Thiết lập các điều kiện trước khi thực hiện test.
    • “Act”: Thực hiện hành động cần kiểm thử (gọi hàm add).
    • “Assert”: Kiểm tra kết quả với kết quả mong đợi (sử dụng expect với matcher toBe).

2.3. Chạy test bằng Karma:

npx karma start
hoặc karma start

Nếu hàm add hoạt động đúng, bạn sẽ thấy output trong terminal cho biết test đã được chạy thành công. Ngược lại, nếu có lỗi, Jasmine sẽ cung cấp thông báo về nơi xảy ra lỗi.

Lưu ý: Đảm bảo bạn đã cài đặt Karma và Jasmine cùng với karma-jasmine plugin trước khi chạy test.

Tải Ứng Dụng MN HKD

Quản lý kế toán hộ kinh doanh dễ dàng, mọi lúc mọi nơi