Intellij and NodeJS setting up TDD

Posted on Thursday, April 16, 2015

 As I start developing in node from scratch I want to do it right.  I installed the Node plugin for Intellij and poked at it a bit (the write up is at )

How do I do TDD (Test Driven Development) with Node?  And how do I do it in Intellij.

(For reference I am using Intellij 14.1)

Be warned this is a brain dump from me as I poke around and figure out node, there is going to be mistakes made by me along the way…

Which Test Framework to use?

Before I start down this path it’s a good idea to do some research.
Here are a few of the websites and videos I watched to help me make my decision.

Testing with mocha

Test-driven Development of Web Apps in Node.js

Node.js Development Workflow in WebStorm [3]

Node.js Modules Tutorial #8 - Testing

Building Applications with Node JS Course over 4 hours by JumpStart

So which one?

I am going to use Mocha for the test framework  [6] and Chai for the assertion library [7]

Create a new Node Project

I am going to start fresh, create a new Node project in Intellij 14.1
I already have the NodeJS plugin installed for Intellij 14.1, if you don't have that set up check out my write up on how to do that at

From Intellij Create a new Project

From the menu select File -> New -> Project

Select Node.js and NPM and click Next.

Give it a name and click Finish.

This pops up. (for me).

This is supposed to configure the Intellij so that it can have Code Completion on the Base NodeJS libraries.  I can't seem to set it up right.  So I click cancel (and set it up manually).

To set up code completion for Node base libraries do the following.

From the File menu select Settings

Under Languages & Frameworks -> JavaScript select Libraries

Checkbox nod-DefinitelyTyped and click OK.

(If you don't have this installed you will need to click download,  Select TypeScript Community stubs from the pull down and download and install node)

Setting up tests

Install mocha and chai via the npm command line tool.

Click terminal in the lower left of Intellij

Run the following commands

  > npm install -g mocha
  > npm install chai

Create a test folder

Right click on the project and select New -> Directory.

Name it test

Create a my-app.test.js file in the tests folder.

Add a test

Put this code in to test the test.

var assert = require('chai').assert;

'My App', function() {

'Testing equality', function() {
'1 should equal 1', function () {
assert.equal(1, 1);

From the command line run the tests

  > mocha test/my-app.test.js

As a another test I created a second test file.  numbers.test.js


Put the following code in it.

var assert = require('chai').assert;

'Number Testing', function() {

var data = {'names':['joe', 'lisa', 'fred']}

describe('Testing equality', function() {
'2 should equal 2', function () {
assert.equal(2, 2);

'Testing array Size', function() {
'Array should contain 3 names', function () {
assert.equal(data.names.length, 3);

From the command line run the tests

  > mocha test/numbers.test.js

Mocha is smarter

You don't have to designate the file name you can just give it a folder name and it will run all the tests it finds in the given folder.

From the command line run this

  > mocha test

It ran all the test from both files.

As a quick test I created a subfolder and put a test in it.

Then ran

  > mocha test

It did not see the subdirectory…. That is a problem.
I found this post on the subject [8] which shows how, you need to use the -recursive flag

  > mocha --recursive test

Now it runs all the tests.

Add test script to package.json

You can edit the package.json file to add a script to run the tests.

Here is how I edited my file.

"name": "Node_TDD_Test",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www",
"test": "mocha -recursive test"
"dependencies": {
"body-parser": "~1.12.0",
"cookie-parser": "~1.3.4",
"debug": "~2.1.1",
"express": "~4.12.2",
"jade": "~1.9.2",
"morgan": "~1.5.1",
"serve-favicon": "~2.2.0"

Now I can run this from the command line to run the script.

  > npm test

Testing on Intellij

OK, now that I have testing working what is the best way to integrate it with Intellij?

Webstorm seems to have a simple way to set this up  [9].  I don't have Webstorm, but I may need to invest in it sooner rather than later.

Looks like it's only $49 for an individual license.

Well if you don't want to pay for Webstorm, yet, but have Intellij like I do what is the best thing to do?

Click on Edit Configurations on the top.

Click +

Select Mocha

Click here and locate the test directory

Change its name

Change the User Interface to tdd

Go locate the Mocha Package.

Mine was located at

Click OK.

Run the tests

That ran, but it did not get my subdirectory tests.

Add --recursive to the mocha options.  And run it again.

Much better.


[1]        Testing with mocha
                Accessed 4/2015
[2]        Test-driven Development of Web Apps in Node.js
                Accessed 4/2015
[3]        Node.js Development Workflow in WebStorm
                Accessed 4/2015
[4]        Node.js Modules Tutorial #8 - Testing
                Accessed 4/2015
[5]        Building Applications with Node JS Course over 4 hours by JumpStart
                Accessed 4/2015
[6]        MochaJS home Page
                Accessed 4/2015
[7]        Chai Assertion Library
                Accessed 4/2015
[8]        Running mocha tests on subdirectories
                Accessed 4/2015
[9]        Running Nodeunit Tests
                Accessed 4/2015


  1. Thanks a lot for the tutorial.
    For me it had to be "test": "mocha --recursive tests" (with double -) in the package.json. Just a little think. :)
    You help me a lot, thank you.

    1. Thanks for the info. Also glad to hear this article was helpful to you :)