Merge pull request #434 from koajs/non-error
non-error thrown, fixed #432
This commit is contained in:
commit
bb5ecd325c
2 changed files with 19 additions and 2 deletions
|
@ -7,7 +7,6 @@ var createError = require('http-errors');
|
||||||
var httpAssert = require('http-assert');
|
var httpAssert = require('http-assert');
|
||||||
var delegate = require('delegates');
|
var delegate = require('delegates');
|
||||||
var statuses = require('statuses');
|
var statuses = require('statuses');
|
||||||
var assert = require('assert');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Context prototype.
|
* Context prototype.
|
||||||
|
@ -103,7 +102,7 @@ var proto = module.exports = {
|
||||||
// to node-style callbacks.
|
// to node-style callbacks.
|
||||||
if (null == err) return;
|
if (null == err) return;
|
||||||
|
|
||||||
assert(err instanceof Error, 'non-error thrown: ' + err);
|
if (!(err instanceof Error)) err = new Error('non-error thrown: ' + err);
|
||||||
|
|
||||||
// delegate
|
// delegate
|
||||||
this.app.emit('error', err, this);
|
this.app.emit('error', err, this);
|
||||||
|
|
|
@ -93,4 +93,22 @@ describe('ctx.onerror(err)', function(){
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('when non-error thrown', function(){
|
||||||
|
it('should response non-error thrown message', function(done){
|
||||||
|
var app = koa();
|
||||||
|
|
||||||
|
app.use(function *(next){
|
||||||
|
throw 'string error';
|
||||||
|
})
|
||||||
|
|
||||||
|
var server = app.listen();
|
||||||
|
|
||||||
|
request(server)
|
||||||
|
.get('/')
|
||||||
|
.expect(500)
|
||||||
|
.expect('Content-Type', 'text/plain; charset=utf-8')
|
||||||
|
.expect('Internal Server Error', done);
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue