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