Mục Lục
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ộtdescribe
. Mỗiit
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 beforeEach
và afterEach
đượ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 matchertoBe
).
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.
Xin chào,
99,99% bài viết tại website là kết quả của khai thác dữ liệu từ AI ChatGPT sau đó được lựa chọn, biên tập lại nội dung, chỉ vài bài là không dùng AI. Tôi lưu tại website này để tra cứu khi cần, để học và để chia sẻ cho bạn bè tôi. Nếu bạn tìm thấy nội dung nào đó khi tìm kiếm thì cứ đọc thoải mái, nó miễn phí, không quảng cáo.
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh