Tìm hiểu về Testing với Jest

Tram Ho

Mỗi một dự án khi bạn làm thì phần viết test ít khi được để ý tới nhiều. Đa phần những dự án nào khách hàng yêu cầu viết test thì lúc đó mới có cơ hội để tìm hiểu sâu hơn về nó. Nên khái niệm viết test nó khá mơ hồ đối với những người mới đi làm. Thật may khi mình đang làm một dự án được tìm hiểu về Jest. Và bài viết này sẽ cho các bạn hiểu được viết test nó là như thế nào ?

Bạn có thể nghĩ Jest nó chỉ được test khi làm việc với React, nó hoàn toàn sai. Bạn có thể sử dụng Jest trong những Javascript Application

Đầu tiên bạn cần hiểu được, tại sao chúng ta cần test ? Nhiều khi bạn viết một function và chúng ta nghĩ những trường hợp đúng, nhưng lại quên mất những trường hợp sai ngoại lệ, làm kết quả trả về nó không được như mong muốn.

Cài đặt Jest vào dự án của bạn sử dụng npm

Sau đó bạn cần thêm dòng dưới vào file package.json trong scripts

--watchAll để cho bạn chạy lại test mỗi khi có những thay đổi ở file test của mình

Tạo file App.js và export một function

Tạo một file khác App.test.js, bạn có thể tạo file này trong cùng thư mục với file App.js. Jest sẽ tự động hiểu đó là file test nếu bạn .test trong khi đặt tên file

Unit test

Là việc bạn test độc lập một phần nhỏ trong dự án (Function/Component). Ví dụ, chúng ta thêm một add() function trong file App.js. Việc test một function có thể được gọi là unit test

Như bạn có thể thấy sau khi import add function, chúng ta đã viết test() function với tham số đầu tiên là tiêu đề test, tham số thứ 2 là một callback function, ở đây expect(add(2, 2)).toBe(4) được hiểu đơn giản là chúng ta đang mong muốn add function sẽ return 4 nếu chúng ta truyền 2, 2 vào

Mở terminal và gõ lệnh npm run test, Bạn sẽ nhìn thấy

Hình trên cho thấy add function đã pass qua tất cả các case

Bây giờ, hay thử cho nhé fail như thế nào nhé. Hãy thay đổi + trong add function

Test bị fail vì mong muốn 4 nhưng thực thế function lại trả về 2

.toBe() trong Jest được gọi là một matcher. Một matcher ngược với .toBe().not.toBe()

Nó sẽ kiểm tra nếu kết quả add(10, 5) không bằng 10

Bạn có thể tham khảo thêm một số matcher khác tại: https://jestjs.io/docs/en/expect

Integration Test

Là nếu một function không được truyền vào một test, những phần còn lại của function phụ thuộc vào một function khác cũng thất bại

Ví dụ, thêm và export một function total được kết nối với add function

Chạy test bạn sẽ nhìn thấy

Bạn có thể nhìn thấy addtotal đã pass test. Bây giờ thử thay đổi một đoạn nhỏ trong file App.js

Chạy test

Tất cả test của chúng ta sẽ fail. Đây được gọi là Integration Test

Còn rất nhiều khái niệm mình không thể nói hết trong bài viết này. Nếu các bạn thấy thích có thể tìm hiểu thêm ở trang chủ của Jest mình có đính kèm link bên dưới.

https://jestjs.io/docs/en/getting-started

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo