Node.js unit testing

JavascriptUnit Testingnode.js

Javascript Problem Overview


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.

Javascript Solutions


Solution 1 - Javascript

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.)

Solution 2 - Javascript

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...

EDIT:

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.

UPDATE:

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.

Solution 3 - Javascript

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.

Solution 4 - Javascript

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.

Solution 5 - Javascript

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?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

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

More examples.

Solution 6 - Javascript

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

Solution 7 - Javascript

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

Solution 8 - Javascript

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

Solution 9 - Javascript

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.

Solution 10 - Javascript

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMarkView Question on Stackoverflow
Solution 1 - JavascriptevilceleryView Answer on Stackoverflow
Solution 2 - JavascriptbennidiView Answer on Stackoverflow
Solution 3 - JavascripteinarosView Answer on Stackoverflow
Solution 4 - Javascriptjtsao22View Answer on Stackoverflow
Solution 5 - JavascriptRaynosView Answer on Stackoverflow
Solution 6 - Javascriptsam100ravView Answer on Stackoverflow
Solution 7 - JavascriptZorayrView Answer on Stackoverflow
Solution 8 - JavascriptB TView Answer on Stackoverflow
Solution 9 - JavascriptDale AndersonView Answer on Stackoverflow
Solution 10 - JavascriptnoamtcohenView Answer on Stackoverflow