Giới thiệu về Jest (Delightful JavaScript Testing)

https://viblo.asia/p/gioi-thieu-ve-jest-delightful-javascript-testing-gDVK2wWeZLj

Giới thiệu chung về jest.

  • Jest là một thư viện testing được tạo bởi facebook.

  • Nó được tạo ra với mục tiêu ban đầu là cho reactjs, nhưng nó đã vượt xa những nhu cầu ban đầu, để trở thành một thư viện testing cho javascript một cách hoàn chỉnh.

  • Một trong nhưng ưu điểm lớn của jest là nó làm việc hiệu quả với rất ít bước setup và configuration. Nó đến với các tính năng chính là assertion library và hỗ trợ mocking.

  • Nó được viết theo BDD style như hầu hết các thư viện testing hiện nay. Jest còn có một tính năng đặc biệt, đó là snapshot testing, nó lưu lại snapshot (hay nói cách khác là cấu trúc view tại thời điểm hiện tại) rồi so sánh với snapshot trong tương lai, nếu chúng không giống nhau thì test của chúng ta đã fail hoặc có một số thứ đã thay đổi.

  • Jest có một số nhược điểm quan trọng như: nó là một thư viện mới, vẫn chưa được dùng nhiều bởi cộng đồng developer. Nó có ít tool và thư viện support so với các thư viện cũ và lão làng như Mocha.

Overview các tính năng của jest.

  1. Using Matchers

  1. Test Truthiness (kiểm tra tính đúng đắn)

  1. Number:

  1. String:

  1. Array:

  1. Exception:

  1. Callbacks

  1. Promise:

  1. Async/Await

  1. Setup cho nhiều test:

  1. Setup một lần (bắt đầu hoặc kết thúc):

  1. Nhóm test lại (describe):

  1. Dùng mock function:

  1. Mock return value (define giá trị trả lại của function)

  1. Custom Matchers

Dùng thuộc tính .mock để inspect nhiều xác định hơn:

  1. Mock Implementations: Hơn cả chức năng trả lại, nó còn thay thế toàn bộ hàm mocking:

  1. Testing snapshot:

renderer.create create ra view và chuyển view này thành json, toMatchSnapshot() sẽ so sánh cấu trúc hiện tại với snapshot lần cuối, nếu chưa có thì nó sẽ tạo cái mới và cho test này pass. Snapshot file sẽ chứa output như:

Trên đây là một số giới thiệu cho cái nhìn tổng quan về jest, hy vọng mọi người có thể trải nghiệm và vận dụng được nó 😃

Last updated

Was this helpful?