- vừa được xem lúc

Scoping - phạm vi kiểm thử trong jest

0 0 25

Người đăng: VoDanh

Theo Viblo Asia

Scoping - Phạm vi kiểm thử trong jest

Cho đến nay, chúng ta chỉ xem xét các thử nghiệm thực hiện ở cấp độ cao nhất. Tất cả các mẫu kiểm tra về cơ bản trong cùng một phạm vi. Nhưng Jest cung cấp cho chúng ta tùy chọn để thu hẹp phạm vi. Điều này có thể rất dễ dàng cho việc thiết lập các thử nghiệm định kỳ. Trước đây, chúng ta đã tìm hiểu về các hành động lặp lại Jest, đây là những ví dụ điển hình về việc sử dụng để xác định phạm vi kiểm thử.

Làm thế nào định nghĩa scope in Jest

Để định nghĩa 1 scope in Jest, chúng ta có thể sử dụng hàm describe để bao bọc tất cả các thử nghiệm của mình.

describe('Các hành động liên quan tới chức năng người dùng', () => { test('Tạo mới người dùng', () => { expect(createUser('vodanh22', 'p4sSw0rD')).toBe(true); }); test('Cập nhật tên người dùng', () => { expect(updateUser(1, 'Vô Danh')).toBe(true); });
});

Bây giờ, hai mẫu kiểm tra này sẽ chạy bên trong phạm vi này, và bên cạnh việc tổ chức tốt, chúng tôi nhận được một số lợi ích bổ sung của phạm vi này. Ví dụ: phạm vi này có thể nhận các hành động lặp lại của riêng nó. Các hành động được xác định này sẽ chỉ kích hoạt cho phạm vi này. Tuy nhiên, các hành động được xác định phạm vi toàn cầu cũng sẽ kích hoạt! Ví dụ, giả sử chúng ta có một cơ sở dữ liệu công khai, nhưng đối với một phần, chúng ta cũng muốn áp dụng một cơ sở dữ liệu thích.

beforeAll(() => { return createDatabase();
}); beforeEach(() => { return populateUsers();
}); afterEach(() => { return clearUsers();
}); afterAll(() => { return removeDatabase();
}); test('Thêm mới 1 user', () => { expect(addUser('vodanh2')).toBe(true);
}); describe('Công việc mong muốn', () => { beforeEach(() => { return populateHobbies(); }); beforeEach(() => { return clearHobbies(); }); test('Thêm mới 1 công việc mong muốn', () => { expect(addHobby(1, 'Photography')).toBe(true); });
});

Khi chạy đoạn test trên chúng ta sẽ thấy thứ tự như sau:

  1. before all
  2. before each (global scope)
  3. user test
  4. after each (global scope)
  5. before each (global scope)
  6. before each (hobby scope)
  7. hobby test
  8. after each (hobby scope)
  9. after each (global scope)
  10. after all Như bạn có thể thấy, một kịch bản kiểm thử chạy hoàn chỉnh về việc thực thi, nhưng điều cần thiết là phải xem xét trước và sau mỗi lệnh kiểm thử. Phạm vi cũng có thể được sử dụng để xác định và ghi đè các biến mà bạn có thể sử dụng.

Ví dụ: chúng ta có thể có một người dùng đã đăng nhập khác mà chúng tôi muốn viết các trường hợp thử nghiệm.

describe('Danh sách công việc của user', () => { const loggedUser = 1; test('Add a new user', () => { console.log(`adding new user: ${loggedUser}`); });
}); describe('Danh sách công việc mong muốn', () => { const loggedUser = 2; test('Add a new hobby', () => { console.log(`adding new hobby for: ${loggedUser}`); });
});

Như bạn có thể thấy, chúng ta xác định logUser hai lần và kết quả của chuỗi này gần như mong đợi:

  • đang thêm mới user: 1
  • đang thêm mới sở thích cho user: 2

Tôi hy vọng điều này cung cấp cho bạn phần giới thiệu đầu tiên tuyệt vời về việc định nghĩa phạm vi sử dụng trong các kịch bản kiểm thử của bạn.

Cảm ơn đã đọc và hãy giữ kết nối

Cảm ơn bạn đã dành thời gian đọc bài viết này.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cùng tìm hiểu về các hook trong React hooks

Đối với ai đã từng làm việc với React thì chắc hẳn đã có những lúc cảm thấy bối rối không biết nên dùng stateless (functional) component hay là stateful component. Nếu có dùng stateful component thì cũng sẽ phải loay hoay với đống LifeCycle 1 cách khổ sở Rất may là những nhà phát triển React đã kịp

0 0 81

- vừa được xem lúc

Khi nào nên (và không nên) sử dụng Redux

. Công việc quản lý state với những hệ thống lớn và phức tạp là một điều khá khó khăn cho đến khi Redux xuất hiện. Lấy cảm hứng từ design pattern Flux, Redux được thiết kế để quản lý state trong các project JavaScript.

0 0 106

- vừa được xem lúc

ReactJS: Props và State

Nếu bạn đã học ReactJS hay React Native, bạn sẽ thấy các Props và State được sử dụng rất nhiều. Vậy chính xác chúng là gì? Làm thế nào để chúng ta sử dụng chúng đúng mục đích đây.

0 0 41

- vừa được xem lúc

State và Props trong Reactjs

Hello các bạn, tiếp tục seri tìm hiểu về ReactJs hôm nay mình xin giới thiệu đến các bạn hai thứ mình cho là thú vị nhất của ReactJs là State và Props. State bạn có thể hiểu đơn giản là một nơi mà bạn lưu trữ dữ liệu của Component, từ đó bạn có thể luân chuyển dữ liệu đến các thành phần trong Compon

0 0 36

- vừa được xem lúc

Memoization trong React

. 1.Introduction. Memoization có liên quan mật thiết đến bộ nhớ đệm, và dưới đây là một ví dụ đơn giản:. const cache = {}.

0 0 38

- vừa được xem lúc

Nâng cao hiệu suất React Hooks với React.memo, Memoization và Callback Functions

1.Ngăn Re-render và React.memo. React.

0 0 67