Testing trong Javascript với Jest (Phần 1) (ok)
https://viblo.asia/p/testing-trong-javascript-voi-jest-phan-1-LzD5d2JwZjY
Hello 500 anh em, lại là mình đây. Chú bé coder yêu màu tím thích màu hồng và ghét sự giả dối đây
Sau một thời gian dài vắng bóng thì mình đã trở lại để chia sẽ với các bạn về một công cụ mạnh mẽ hỗ trợ cho việc viết unit test trên các ứng dụng Javascript. Đó chính là Jest - một công cụ hỗ trợ được xây dựng bởi anh lớn Facebook. Vậy cụ thể thì chúng ta sẽ làm được gì với Jest đây? Các bạn hãy theo dõi tiếp để biết thêm chi tiết nhé.
Cài đặt
Để sử dụng được Jest thì tất nhiên chúng ta sẽ phải tiến hành cài đặt nó cho dự án của chúng ta đúng không nào
Ở đây các bạn có thể dùng command
npm
hoặc yarn
để cài đặt với combo thần thánh bên dưới.
Sau đó thêm đoạn này vào file package.json
Matchers
Jest sử dụng "matchers" để cho phép bạn kiểm tra các giá trị theo những cách khác nhau. Dưới đây là các matchers hay gặp và cách sử dụng:
toBe
Sử dụng toBe để kiểm tra các giá trị trả về.
toEqual
Tương tự như toBe nhưng nó được dùng để kiểm tra với dữ liệu dạng object.
Truthiness
Trong unit test, đôi khi bạn cần phân biệt giữa undefined, null và false, nhưng đôi khi bạn không muốn xử lý chúng theo cách khác nhau. Và Jest cung cấp sẵn các helpers cho phép bạn mô tả rõ ràng về những gì bạn muốn.
toBeNull chỉ đối sánh với null
toBeUndefined chỉ đối sánh không xác định
toBeDefined đối lập với toBeUndefined
toBeTruthy khớp với bất kỳ thứ gì mà câu lệnh if coi là true
toBeFalsy khớp với bất kỳ thứ gì mà câu lệnh if coi là sai
Ví dụ
Numbers
Đối với dữ liệu số thì các bạn có những hàm matchers như sau:
Strings
Bạn có thể kiểm tra chuỗi so với biểu thức chính quy bằng hàm toMatch().
Arrays
Để kiểm tra với mảng thì các bạn cần sử dụng hàm toContain.
Exceptions
Để kiểm tra rằng một function nào đó throw ra lỗi lúc thực thi thì các bạn dùng hàm toThrow nhé.
Lưu ý
Hàm throw một exception cần phải được gọi trong một hàm khác ở expect. Nếu không, quá trình toThrow sẽ không được thành công. Cụ thể là các bạn thấy mình gọi hàm divideByZero() thông qua một arrow function trong expect(() => divideByZero()) chứ không có gọi trực tiếp expect(divideByZero()).
Tổng kết
Test các đoạn code bất đồng bộ (Asynchronous).
Thực hiện một số việc trước và sau khi test (Setup and Teardown).
Sử dụng mock để test các module phụ thuộc nhau (Dependency).
Cuối cùng thì mình chúc các bạn đọc bài có một năm mới với nhiều niềm vui và may mắn trong cuộc sống. Thân ái và quyết thắng
Last updated