Node.js unit testing [closed]

2020/10/26 13:02 · javascript ·  · 0评论

Are there any good Node.js (server-side JavaScript) unit testing frameworks currently out there?

I'm looking for something a little deeper than the provided Assert module.

I ended up using Nodeunit and am really happy with it.

I was using Expresso originally, but the fact that it runs tests in parallel caused a few problems. (For example, using database fixtures doesn't work well in this situation.)

I was also looking for a decent test framework for node and found Mocha. It is the official successor to Expresso and seems very mature.

It allows to plug-in different assertion libraries, it offers reporters for code coverage and other things (you can plug-in your own). It can run synchronously or asynchronously and it has a concise API.

I will give it a try and report back...


After an incredible amount of time dedicated to other projects I finally came back to a JavaScript project and had time to play around with mocha. I can seriously recommend using it. The tests read very nicely, integration with Gulp.js is great and tests run very fast. I was able to setup automatic standalone as well as in-browser (Browserify) test runs and corresponding code coverage reports in about half a day (most of the time spent on understanding how to use Browserify from Gulp.js). To me, Mocha seems a very good choice for a testing framework.


I am still very convinced about Mocha. Integration with Chai allows to plugin different assertion styles. You can checkout a working setup in this GitHub project. I am using it with karma now, integrating code coverage report, automatic watchers and good integration with IntelliJ IDEA.

Personally I've stuck with Expresso, but there are a bunch of different frameworks out there, accommodating most testing styles.

Joyent has an extensive list; give that a go.

I've personally only used the assert module, but I also find myself wanting more. I've looked through many Node.js modules and popular unit testing frameworks are Nodeunit and should (which is made by the same guy as Espresso (maybe an updated name?)

Vows also looks promising.

vows is a solid unit testing library for Node.js, but the syntax is tedious.

I've written a thin abstraction called vows-fluent which makes the API chainable.

And I've written another abstraction, [vows-is] which builds on vows-fluent and exposes a BDD style syntax.

An example would be

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

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

    .context("is testing fun?")"yes")"yes")

    reporter: is.reporter

More examples.

I think among various testing frameworks available, Mocha is the most latest, and very simple to implement. Here is a wonderful tutorial about how to use it:

How to build and test your Rest API with Node.js, Express and Mocha

If you are familiar with QUnit, you could use node-qunit which is a sort of a node wrapper around QUnit's existing framework.

test-studio is an npm package that provides a powerful, web based front end for unit testing. It supports things like executing individual or groups of tests and stepping node-inspector into individual tests. It currently supports mocha and more frameworks will be supported in future given demand.

Read more about it here.

Disclaimer: I am the author.

Originally made for Node.js, deadunit is a JavaScript unit testing library for Node.js and the browser. Some of its unique attributes:

  • Easy learning curve
  • Can output test results on the command line (colored or plain-text) or as HTML
  • It prints out the actual lines of code where your assertions are, so your output makes sense even if you don't spend a lot of time writing test commentary
  • It has a simple count assertion that makes dealing with expected exceptions and asynchronous asserts easy
  • it prints out exception and any attached data they have
  • it'll let you know if your code is hanging (something you don't want, but usually goes unnoticed)
  • Has an event driven API enables streaming test results across a network, or in any way you want.
  • Supports testing with node-fibers

I just uploaded a project I am using to unit test Node.js with Karma and Jasmine: Narma.

Your Node.js modules get loaded into a node-webkit browser, so you can execute Node.js modules and use libraries like jQuery in the same heap.

文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!