Khung thử nghiệm tốt nhất để sử dụng với Node.js là gì? [đóng cửa]


130

Tôi đã xem danh sách các khung thử nghiệm khá dài tại https://github.com/ry/node/wiki/modules#testing . Kinh nghiệm với các khung này là gì?

Rõ ràng khả năng chạy trong trình duyệt sẽ là một phần thưởng lớn, nhưng tôi chủ yếu quan tâm đến Node.js. Một cái gì đó với độ nghiêng không đồng bộ nặng nề sẽ là tuyệt vời.

Câu trả lời:


70

Cập nhật:

Mocha là tốt nhất theo ý kiến ​​của tôi.


Kinh nghiệm với các khung này là gì?

Tôi đã chơi với expresso , một khung thử nghiệm khá tuyệt vời cũng có phạm vi kiểm tra. Nó được tạo bởi TJ Holowaychuk, người cũng là người tạo ra Express.js (cực kỳ nhanh (và nhỏ) khung phát triển web phía máy chủ được xây dựng trên Node.js và Connect). Gần đây tôi thấy rằng anh ta cũng có một thư viện tuyệt vời có tên là Should.js có thể được sử dụng cùng với Expresso để có trải nghiệm thử nghiệm tốt hơn nữa.

Rõ ràng, khả năng chạy trong trình duyệt sẽ là một phần thưởng lớn

Tôi không tin rằng nó có thể chạy trong trình duyệt, nhưng tôi cũng không hiểu tại sao bạn muốn chạy nó trong trình duyệt?

nhưng tôi chủ yếu quan tâm đến Node.js. Một cái gì đó với độ nghiêng không đồng bộ nặng nề sẽ là tuyệt vời.

Trích dẫn từ Expresso:

Đối số được truyền cho mỗi cuộc gọi lại là beforeExit, thường được sử dụng để xác nhận rằng các cuộc gọi lại đã được gọi.

Bạn có thể sử dụng beforeExit để kiểm tra các chức năng không đồng bộ.


MIPO : Theo dõi TJ Holowaychuk trên GitHub , vì anh ta tạo mã nguồn mở rất tốt.


Cảm ơn đã trả lời, tôi đã thử expresso out nhưng thấy rằng hỗ trợ async không trực quan lắm. (Dù sao đối với tôi)
doffm

3
Tôi hiện đang thử lời thề ( vowsjs.org ) để tôi dễ hiểu hơn.
doffm

vowjs cũng trông giống như một khung thử nghiệm tốt đẹp. Tôi thích tính năng bao phủ thử nghiệm của expresso. Thêm vào đó tôi tự hỏi những gì bạn không hiểu?
Alfred

4
Bạn nói rằng bạn thích Mocha bây giờ, nhưng tại sao?
Jonathan Arkell

Hãy thử nó. Mocha có mọi thứ :). Ngay cả hỗ trợ trình duyệt, bảo hiểm mã. Bạn đặt tên cho nó, mocha có nó!
Alfred

40

Tôi sử dụng VowsJS , dễ sử dụng khung BDD không đồng bộ (Phát triển hướng hành vi) và hoàn thành công việc.

Từ những gì tôi thấy gần đây, đó là những gì nhiều người đã chọn để kiểm tra các mô-đun NPM của họ, vì vậy tôi tin rằng cho đến nay nó là cách tốt nhất để sử dụng.

Một số khung thử nghiệm phổ biến có thể được sử dụng với NodeJS cũng là những khung:

Bạn cũng có thể xem danh sách các khung kiểm tra JavaScript tại đây

Một số lib khác có thể giúp bạn viết mã tốt hơn là:

  • ReadyJS xem các tệp js của bạn và kiểm tra chúng bằng JSHint
  • Máy chủ tích hợp liên tục nhỏ
  • Jezebel liên tục thử nghiệm cho Jasmine
  • Nosy không hoàn toàn ở đó nhưng có một lộ trình tốt đẹp vì vậy tôi để mắt đến nó

Ngoài ra còn có Máy chủ Tre CI của Atlassian, nó tự động hóa các bản dựng và kiểm tra. Nó là một gói cho Apache / Tomcat (sux vì nó sử dụng Java và làm cho nó rất nặng) cũng không miễn phí nhưng nó có giấy phép khởi động có giá 10 đô la nên tôi tin rằng nó có giá cả phải chăng. Đây là tính năng nổi bật nhất trong tất cả các máy chủ CI mà tôi tìm thấy cho đến nay và nó hỗ trợ tất cả các bài kiểm tra đơn vị hỗ trợ xUnit , điều đó có nghĩa là bạn có thể chạy các bản dựng / kiểm tra cho bất kỳ ngôn ngữ nào với Bamboo.

Một tùy chọn khác cho CI với NodeJS là Travis được nhiều người sử dụng cho các dự án nguồn mở của họ, vì nó nói Một dịch vụ tích hợp liên tục được lưu trữ cho cộng đồng nguồn mở.

Ngoài ra còn có một cuộc thảo luận nhóm google với chủ đề Tích hợp liên tục cho chủ đề Dự án Node JS .


6
Một lưu ý cho mọi người khi nghĩ đến việc sử dụng Nguyện: nó chưa được cập nhật kể từ năm 2012
Bộ chỉ huy mã

Họ đã thực hiện một số thay đổi sau . phát hành lần cuối: tháng 9 năm 2015
Andre Figueiredo

Có cổng thông tin xấu trên trang web Vows oficial vào năm 2020, có thể đã chết?
Lincoln

wow, anh bạn, đã rất nhiều năm kể từ đó, tất cả những gì tôi có thể tìm thấy về VowJS bây giờ là: istavros.github.io/vowjs nhưng thật không may, tôi không thể đề nghị bạn sử dụng nó vào năm 2020. Nó đã lỗi thời và tôi sẽ mạnh mẽ đề nghị bạn kiểm tra Mocha ( mochajs.org ), Jasmin ( jasmine.github.io ) và Jest ( jestjs.io ) thay thế.
panosru

14

Dựa trên những nhận xét của người hỏi ở trên, tôi đã thử lời thề và nó đã giải quyết được rất nhiều vấn đề tôi gặp phải khi thử nghiệm không đồng bộ. Khả năng kết hợp thử nghiệm nối tiếp và song song của nó là tuyệt vời.

Hãy chắc chắn rằng bạn đã đọc tài liệu hướng dẫn một cách cẩn thận, nhưng một khi bạn hiểu rõ về nó, nó sẽ linh hoạt, mạnh mẽ và tạo ra kết quả tốt, sạch sẽ.

CẬP NHẬT: Tôi cũng sẽ khuyến khích mọi người kiểm tra nên cho khẳng định của họ. Nó cho phép các xác nhận rất linh hoạt, rất dễ đọc và tương thích với cả Expresso và Nguyện, và có lẽ hầu hết các khung kiểm tra khác.

(Tôi đang đăng bài này dưới dạng câu trả lời riêng biệt trong trường hợp mọi người không chú ý đến nhận xét về câu trả lời của Alfred.)

CẬP NHẬT 1/7/2015: Để biết giá trị của nó, tôi đã chuyển từ Nguyện sang Mocha và từ Nên sang Chai. Mocha hiện đã hỗ trợ tốt hơn nhiều cho các thử nghiệm không đồng bộ bằng cách sử dụng lời hứa và Chai cho phép một số tùy chọn xác nhận linh hoạt, bao gồm cả expectapi, cho những người không muốn sửa đổi nguyên mẫu đối tượng.


1
shouldđinh một tài sản phi đếm được đặt tên shouldcho Objectnguyên mẫu, có nghĩa là tất cả các giá trị / đối tượng bạn đang làm việc với cái nhìn hơi khác nhau ở thời gian kiểm tra và lúc sản xuất. Trong khi điều này có lẽ 'chỉ hoạt động' trong hầu hết các trường hợp, về nguyên tắc, đó là một ý tưởng tồi để sửa đổi các nguyên mẫu tích hợp; để làm điều đó chỉ trong quá trình thử nghiệm cảm thấy sai. Tất cả chỉ được thực hiện để họ có thể có một cú pháp hay.
chảy vào

@flow kể từ v2, nó rất dễ sử dụng shouldmà không cần mở rộng Object.prototype(chỉ cần gọi require('should').noConflict()và sử dụng Should.js như một sự thay thế mong đợi.
den bardadym

6

Tôi đã bắt đầu sử dụng Jasmine để kiểm tra JavaScript của mình một cách cụ thể vì nó nhỏ và chạy trong cả trình duyệt và nút. Nó cũng có API báo cáo và trình so khớp thực sự chắc chắn để dễ dàng tích hợp với các công cụ khác trong tương lai. Có một khung mô phỏng xây dựng cũng hữu ích vì nó thường là một trong những điều đầu tiên tôi sẽ thêm khi tôi sử dụng qunit cho TDD trong trình duyệt.


2

Nếu bạn muốn có một khung BDD thực sự thì có thể xem xét Yadda . Nó tích hợp với mocha, hoa nhài, nodeunit, qunit, zombie và casperjs, để hỗ trợ các tệp tính năng, ví dụ:

   Scenario: provides the version of all services
      given service x is running
      and service y is running
      when I request the service versions
      then service x should be version 0.0.1
      and service y should be version 0.0.2

2

Tôi đã sử dụng nodeunit và khả năng hoạt động với các chức năng không đồng bộ của nó khá đơn giản.

Có một hướng dẫn tốt đẹp sẽ giúp bạn sẵn sàng với nodeunit trên blog của mình .

[ Lưu ý: API đã thay đổi kể từ blogpost - setUp(callback)tearDown(callback)cả hai đều gọi lại làm đối số, mà bạn cần gọi khi quá trình thiết lập / chia nhỏ hoàn tất. ]


Nhìn vào điều này và sau khi thử một vài thử nghiệm các hàm mongoose.js trong expresso, ưu tiên của nodeunit là không chạy tất cả các thử nghiệm song song và cho phép các thử nghiệm setUp và tornDown có vẻ hữu ích.
măng tây
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.