Express - Mocha - Chai - ES6 - loay hoay để test RestAPI
TIL
499
@100daysTIL
43
White

ngminhtrung viết ngày 09/02/2018

Express - Mocha - Chai - ES6 - loay hoay để test RestAPI

Day16

Ok vậy đã tạm xong vụ viết các Rest API trong Express và Node.js, giờ là lúc viết test cho nó.

Sử dụng tool nào để test bây giờ?

  • Dùng POSTMAN --> vô cùng trực quan. Nhưng test đi test thủ công này mãi cũng chán. Hóa ra người ta gọi bước này là "naive" test.
  • Muốn làm tự động, cần dùng các công cụ khác. Ví dụ như Mocha, và Chai (và Chai-HTTP)

Mocha và Chai (và Chai-Http) là gì?

Mocha là test framework để giúp thực hiện run các test specification. Nhưng để viết cụ thể trong test specification, sử dụng các assertion dạng expect, shoud, equal.to, have., ... dạng ngôn ngữ đời thường thì cần phải có assertion library, và Chai chính là một dạng library như thế.

Không có Mocha và Chai có được không?

Chắc là được, lúc đấy thì phải tự viết 1 rất nhiều câu lệnh không theo chuẩn nào, if then for các kiểu.

Chai-http để làm gì?

Để giúp test các http app

Ủa thế thằng nào sẽ turn on server và listen to port?

KHÔNG BIẾT. Huhuhu . Không biết cơ chế gì mà hội Mocha, Chai và Chai-http turn on server. Không biết làm cách nào để kiểm tra xem localhost tại cổng chỉ định đã được bật chưa.

Ok cài mocha và chai rồi, chạy lỗi không?

Lỗi ngay đầu tiên cứ báo cái gì mà import không tìm thấy. Hóa ra là code viết app, và code viết test specificaion đều dùng ES6, mà thằng Mocha thì chỉ dùng ES5. Vậy là cần 1 thằng trung gian, chính là babel (cụ thể là gói babel-core) để giúp biên dịch ra ES5 trước khi quẳng cho thằng Mocha.

Quy trình nó sẽ thành kiểu này

           file spec test viết bằng 
         JavaScript ES6
             |
             |
mocha ---> đọc các files trên
             |
babel ---> biên dịch files
           từ ES6 thành ES5
             |            
mocha ---> thực hiện tests
             |
             |
           cho kết quả

Sửa lỗi Es6 ES5 rồi chạy còn lỗi không?

Vẫn lỗi, res báo undefined. Không biết cách nào để xem server được bật hay chưa.

dependencies vs. dev-dependencies

Trong khi cài đặt còn phát hiện hóa ra là trong package.json có tồn tại 2 cụm:

  • dependencies --> ứng với npm install --save thông thường
  • devDependencies --> ứng với npm install --save-dev

Khi cài các testing libaries trên, có lẽ họ nhét vào devDependencies để phân biệt rằng các packages này không phải là cốt lõi để tạo ra sản phẩm mà chỉ là công cụ trong quá trình tạo ra sản phẩm thôi. Tức là thằng devDependencies chỉ cần trong giai đoạn development (phát triển). Còn 1 khi đã thành product sau khi deploy, thì không cần nữa.

Tham khảo sau này:

ngminhtrung 09-02-2018

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ngminhtrung

31 bài viết.
15 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
25 5
Ghi chú: Tiêu đề hoàn toàn mang tính câu view. Bài copy từ blog của tác giả :) Tại sao lại có bài viết này? Một ngày đẹp giời tôi cần kiểm t...
ngminhtrung viết 2 tháng trước
25 5
White
4 11
Nói thực, tôi cũng không biết gì về (Link) cho đến hôm bị cô bạn (Linh Ngô) đè ra cài ngấu nghiến trên máy và bảo cái này là "bắt buộc" nếu dùng Ma...
ngminhtrung viết 2 tháng trước
4 11
White
4 0
Vẽ Spirograph bằng D3.js Chắc hồi trẻ con ai cũng đã từng một lần nghịch 1 cái thước "sáng tạo" tên là "Spirograph" (/ˈspīrəˌɡraf/). Khi ấy ta đặt...
ngminhtrung viết 1 tháng trước
4 0
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
White
8 0
Lấy fake path của file trong html input Ngữ cảnh: em cần làm một cái nút tải ảnh lên có preview. GIải pháp đầu: Dùng (Link) đọc file ảnh thành ba...
Hoàng Duy viết gần 2 năm trước
8 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
31 bài viết.
15 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!