Kiểm tra đơn vị Node.js [đã đóng]


164

Có bất kỳ khung kiểm tra đơn vị node.js (máy chủ js) tốt nào hiện có không? Tôi đang tìm kiếm một cái gì đó sâu hơn một chút so với mô-đun Assert được cung cấp.

Câu trả lời:


66

Tôi đã kết thúc bằng cách sử dụng đơn vị nút và tôi thực sự hài lòng với nó.

Tôi đã sử dụng Expresso ban đầu nhưng thực tế là nó chạy thử nghiệm song song gây ra một vài vấn đề. (Ví dụ: sử dụng đồ đạc cơ sở dữ liệu không hoạt động tốt trong tình huống này).


25
Expresso không buộc bạn phải chạy thử nghiệm song song. Cung cấp cho nó đối số --serial và nó sẽ chạy tất cả theo thứ tự vui vẻ.
einaros

3
Chỉ cần tải xuống và sử dụng nodeunit ... thực hiện chính xác những gì nó nói, hoạt động lần đầu tiên ftw!
Michael Dausmann

1
Nodeunit hơi lạ khi yêu cầu mọi bài kiểm tra gọi .done()imho.
Kos

2
Nếu bây giờ tôi đang bắt đầu một dự án mới, có lẽ tôi sẽ sử dụng Mocha làm khung thử nghiệm
evilcelery

1
Nodeunit yêu cầu phải .done()phù hợp với thử nghiệm không đồng bộ. Tôi đồng ý đôi khi nó có thể hơi khó sử dụng, nhưng nó có một lý do rất tốt để làm theo cách này.
L0j1k

48

Tôi cũng đang tìm kiếm một khung kiểm tra tốt cho nút và tìm thấy Mocha . Nó là sự kế thừa chính thức của Expresso và có vẻ rất trưởng thành.

Nó cho phép bổ trợ các thư viện xác nhận khác nhau, nó cung cấp cho các phóng viên về phạm vi bảo hiểm mã và những thứ khác (bạn có thể bổ trợ cho chính mình). Nó có thể chạy đồng bộ hóa hoặc không đồng bộ và nó có API súc tích.

Tôi sẽ thử và báo cáo lại ...

BIÊN TẬP:

Sau một khoảng thời gian đáng kinh ngạc dành cho các dự án khác, cuối cùng tôi đã trở lại với một dự án Javascript và có thời gian để chơi xung quanh với mocha. Tôi thực sự có thể khuyên bạn nên sử dụng nó. Các bài kiểm tra đọc rất độc đáo, tích hợp với gulp là tuyệt vời và các bài kiểm tra chạy rất nhanh. Tôi đã có thể thiết lập các lần chạy tự động độc lập cũng như chạy thử trên trình duyệt (browserify) và báo cáo bảo hiểm mã tương ứng trong khoảng nửa ngày (phần lớn thời gian để hiểu cách sử dụng browserify từ gulp). Đối với tôi, mocha dường như là một lựa chọn rất tốt cho khung thử nghiệm.

CẬP NHẬT:

Tôi vẫn rất tin về Mocha. Tích hợp với chai cho phép bổ sung các kiểu xác nhận khác nhau. Bạn có thể kiểm tra một thiết lập làm việc trong dự án github này . Bây giờ tôi đang sử dụng nó với nghiệp, tích hợp báo cáo bảo hiểm mã, trình theo dõi tự động và tích hợp tốt với IntelliJ


Liên kết dự án github bị hỏng. Bạn có thể làm mới nó không?
karlisup


15

Cá nhân tôi chỉ sử dụng mô-đun khẳng định, nhưng cũng thấy mình muốn nhiều hơn. Tôi đã xem qua nhiều mô-đun nút và các khung kiểm tra đơn vị phổ biến là đơn vị nút và nên (được tạo bởi cùng một người như Expresso (có thể là tên cập nhật?)

Nguyện cũng có vẻ đầy hứa hẹn.


15
Tôi upvote bạn chỉ cho chơi chữ đó.
ThomasReggi

15

Cá nhân tôi đã bị mắc kẹt với Expresso , nhưng có một loạt các khung khác nhau, phù hợp với hầu hết các phong cách thử nghiệm.

Joyent có một danh sách rộng lớn ; cho nó đi


1
Expresso là người duy nhất có ý nghĩa đối với tôi và hoạt động với mã không đồng bộ đúng cách. Đã thử lời thề và qunit quá.
balupton

5

thề là một thư viện thử nghiệm đơn vị vững chắc cho node.js nhưng cú pháp rất tẻ nhạt.

Tôi đã viết một bản tóm tắt mỏng gọi là lời thề lưu loát , làm cho API có thể kết nối được.

Và tôi đã viết một bản tóm tắt khác, [lời thề là] được xây dựng dựa trên lời thề thành thạo và phơi bày cú pháp kiểu BDD.

Một ví dụ sẽ là

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Thêm ví dụ


6
Vì vậy, cú pháp thề là IMO khủng khiếp
Donn Felker

Có một vở kịch với lời thề với trình bao bọc hấp dẫn. Trông giống như một ý tưởng tốt để thử nghiệm một api json nhưng nhanh chóng xuất hiện trong thời gian ngắn. Tôi cũng có xu hướng thấy rằng apis vốn được định hướng rất nhiều cho các cuộc gọi chuỗi như thế này rất khó sử dụng và khó gỡ lỗi. Chúng có vẻ tốt trong các ví dụ, nhưng không hoạt động tốt trong sử dụng thế giới thực.
drekka

@drekka lời thề và lời thề-thật kinh khủng. sử dụng mocha
Raynos

Đang thử nó ngay bây giờ, nhưng dường như đang gặp phải một loạt các vấn đề tương tự.
drekka

bạn phải sử dụng nó sai thử đọc gist.github.com/2896455 . @drekka
Raynos


1

Nếu bạn đã quen thuộc với QUnit , bạn có thể sử dụng nút-qunit , đây là một loại trình bao bọc nút xung quanh khung hiện có của QUnit.


0

Ban đầu được tạo cho node.js, deadunit là một thư viện thử nghiệm đơn vị javascript cho node.js và trình duyệt. Một số thuộc tính độc đáo của nó:

  • Đường cong học tập dễ dàng
  • Có thể xuất kết quả kiểm tra trên dòng lệnh (màu hoặc văn bản thuần) hoặc dưới dạng html
  • Nó in ra các dòng mã thực tế nơi xác nhận của bạn, vì vậy đầu ra của bạn có ý nghĩa ngay cả khi bạn không dành nhiều thời gian để viết bình luận kiểm tra
  • Nó có một countxác nhận đơn giản giúp xử lý các ngoại lệ dự kiến ​​và các xác nhận không đồng bộ dễ dàng
  • nó in ra ngoại lệ bất kỳ dữ liệu đính kèm nào họ có
  • nó sẽ cho bạn biết nếu mã của bạn bị treo (thứ gì đó bạn không muốn, nhưng thường không được chú ý)
  • Có API hướng sự kiện cho phép phát trực tuyến kết quả kiểm tra trên mạng hoặc theo bất kỳ cách nào bạn muốn.
  • Hỗ trợ kiểm tra với các nút sợi

0

Tôi vừa tải lên một dự án mà tôi đang sử dụng để kiểm tra các nodejs với karma và Jasmine: narma . Các mô-đun nút của bạn được tải vào trình duyệt gật đầu để bạn có thể thực thi các mô-đun nút và sử dụng các thư viện như jquery trong cùng một đống.


0

phòng thử nghiệm là gói npm cung cấp giao diện người dùng dựa trên web mạnh mẽ để kiểm tra đơn vị. Nó hỗ trợ những thứ như thực thi từng cá nhân hoặc nhóm thử nghiệm và bước kiểm tra nút vào các thử nghiệm riêng lẻ. Nó hiện hỗ trợ mocha và nhiều khung sẽ được hỗ trợ trong nhu cầu tương lai.

Tìm hiểu thêm về nó ở đây .

Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả.


1
Có vẻ như điều này được viết bởi bạn, phải không? nếu vậy, bạn nên tiết lộ sự thật đó trong câu trả lời của bạn.
strugee
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.