Unit Testing Full Stack Part 1 – node/io.js with express

April 6, 2015
Reading Time: 2 minutes

This is going to be a multi-part series of posts to detail my current process for unit testing a full stack javascript application. Consider this my brain dump of information that I’ve either found from others posts, found in the official documentation or I’ve just been doing it that way because it makes sense in my head.

Unit testing has to be one of the most important aspects for any developer that’s serious about their work to start doing, and be disciplined enough to continue doing it regardless of some of the mind-numbing aspects of it.

Starting off we will be establishing the testing procedure for our javascript backend, which consists of node/io.js using express to serve up our restful api. I was shocked once I finally got everything working properly, with how easy it was to get going.

You will need to npm install the following modules:

  • mocha
  • supertest
  • chai

These are the only modules necessary to do all your assertion/expect testing.

Once installed, I would suggest creating a test folder at the root of your application directory. Inside of this directory I will typically split groups of tests for each Controller in my application. Ending up with something like this:

The controller specs should be setup something like this:

Now with that setup, you can just run from your project root, from the command line:

and it will watch all test files for changes and run all your tests again, if a change is detected.

That’s all there is to it for getting true automatic testing going for your existing or next express api.

The next post will be for how to properly setup testing for the angular end of your application.

Node, Express and { [Error: socket hang up] code: ‘ECONNRESET’ }

March 29, 2015
Reading Time: 1 minute

I’m not sure how many scenarios this issue would crop up in, but I wanted to at least post about the one that I found:

This happens on my iojs/express api that I’m working on, and trying to do a file upload test with mocha and supertest.

If you are doing something like this:

.attach() is not compatible with .send().

You need to remove .send() and put that data into .field() function calls like this:

Doing this completely resolved the { [Error: socket hang up] code: ‘ECONNRESET’} error that I was receiving.

Hope this helps anyone with the same issue.