var express = require('../') , request = require('supertest'); describe('app', function(){ describe('.VERB()', function(){ it('should not get invoked without error handler on error', function(done) { var app = express(); app.use(function(req, res, next){ next(new Error('boom!')) }); app.get('/bar', function(req, res){ res.send('hello, world!'); }); request(app) .post('/bar') .expect(500, /Error: boom!/, done); }); it('should only call an error handling routing callback when an error is propagated', function(done){ var app = express(); var a = false; var b = false; var c = false; var d = false; app.get('/', function(req, res, next){ next(new Error('fabricated error')); }, function(req, res, next) { a = true; next(); }, function(err, req, res, next){ b = true; err.message.should.equal('fabricated error'); next(err); }, function(err, req, res, next){ c = true; err.message.should.equal('fabricated error'); next(); }, function(err, req, res, next){ d = true; next(); }, function(req, res){ a.should.be.false() b.should.be.true() c.should.be.true() d.should.be.false() res.send(204); }); request(app) .get('/') .expect(204, done); }) }) })