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

Minh-Trung Nguyễn 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

Minh-Trung Nguyễn

58 bài viết.
72 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
44 15
Đăng lại một bài đã viết từ cách đây mấy tháng. Chủ đề này đã có không ít, nhưng chẳng hiểu sao lượng bài tự viết của dân lập trình người Việt ta v...
Minh-Trung Nguyễn viết 3 tháng trước
44 15
White
27 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...
Minh-Trung Nguyễn viết 7 tháng trước
27 5
White
16 4
Về bước tìm và xử lý dữ liệu của Việt Nam phục vụ Data Visualization nền web Làm việc với D3js được nửa năm, một trong những điều bận lòng là chưa...
Minh-Trung Nguyễn viết 3 tháng trước
16 4
Bài viết liên quan
White
2 1
Javascript inititalValue trong reduce() có quan trọng không? Day 41: Đọc code mẫu về hàm reduce() trong (Link), thấy hàm reduce() khá "đơn giản"....
Minh-Trung Nguyễn viết 3 tháng trước
2 1
White
2 0
D3.js Biểu diễn dữ liệu dạng tree bằng việc trải nó ra trên bản đồ Series Today I Learn trong vòng 100 ngày thử thách bản thân ngày 15. Mỗi ngày 1...
Minh-Trung Nguyễn viết 6 tháng trước
2 0
White
1 0
Đối với (Link), cách đơn giản nhất để tạo mới một object là sử dụng function kết hợp với từ khoá new. Bên trong hàm khởi tạo này, từ khoá this dùng...
Lam Pham viết 5 tháng trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
58 bài viết.
72 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á!