How do i test my express app with mocha?

Robin Heggelund Hansen picture Robin Heggelund Hansen · Jan 12, 2012 · Viewed 43.4k times · Source

I've just added shouldjs and mocha to my express app for testing, but I'm wondering how to test my application. I would like to do it like this:

app = require '../app'
routes = require '../src/routes'

describe 'routes', ->
  describe '#show_create_user_screen', ->
    it 'should be a function', ->
      routes.show_create_user_screen.should.be.a.function
    it 'should return something cool', ->
      routes.show_create_user_screen().should.be.an.object

Of course, the last test in that test-suite just tells med that the res.render function (called within show_create_user_screen) is undefined, probably becouse the server is not running and the config has not been done. So I wonder how other people set up their tests?

Answer

alexandru.topliceanu picture alexandru.topliceanu · Jul 9, 2012

found an alternative in connect.js tests suites

They are using supertest to test a connect app without binding the server to any port and without using mock-ups.

Here is an excerpt from connect's static middleware test suite (using mocha as the test runner and supertest for assertions)

var connect = require('connect');

var app = connect();
app.use(connect.static(staticDirPath));

describe('connect.static()', function(){
  it('should serve static files', function(done){
    app.request()
    .get('/todo.txt')
    .expect('contents', done);
  })
});

This works for express apps as well