Testing trong Javascript với Jest (Phần 1) (ok)
https://viblo.asia/p/testing-trong-javascript-voi-jest-phan-1-LzD5d2JwZjY
Last updated
https://viblo.asia/p/testing-trong-javascript-voi-jest-phan-1-LzD5d2JwZjY
Last updated
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é.
Để 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
Và cuối cùng các bạn chỉ việc tạo file *.test.js và chạy lệnh yarn test
. Thật là đơn giản phải không nào
Ví dụ đơn giản về test hàm add 2 số.
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:
Sử dụng toBe để kiểm tra các giá trị trả về.
Tương tự như toBe nhưng nó được dùng để kiểm tra với dữ liệu dạng object.
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ụ
Đối với dữ liệu số thì các bạn có những hàm matchers như sau:
Bạn có thể kiểm tra chuỗi so với biểu thức chính quy bằng hàm toMatch().
Để kiểm tra với mảng thì các bạn cần sử dụng hàm toContain.
Để 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()).
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).
Trên đây là những hàm test cơ bản mình đã tìm hiểu được từ trang chủ của Jest. Mọi thứ cũng chỉ tạm dừng ở việc test các hàm đơn giản mà thôi. Các bạn có thắc mắc gì thì cứ comment trao đổi để cùng nhau giải quyết nhé Ở bài sau mình sẽ giới thiệu tiếp cho các bạn về một số kỹ thuật testing nâng cao hơn như là:
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