【发布时间】:2020-05-28 22:44:18
【问题描述】:
我正在使用 supertest、chai 和 mocha 来测试我的 Web API 应用程序。我有以下代码:
it('should return 500', function(done) {
this.timeout(30000);
request(server)
.get('/some/path')
.expect(500)
.end(function(err, res) {
done();
});
});
它应该会失败。在get 请求中运行的代码是:
// Inside method getData
try {
// Get data
// throws error
} catch (e) {
// catches error and displays it
deferred.reject(e);
return deferred.promise;
}
// Other code not in getData method
dbOps.params.getData(collection, parameter, query).then(
function (arr) {
response.send(arr);
}, function (err) {
logger.error(err.message);
response.status(500).send(err.message);
}
);
它基本上是 deferred.reject(e); 并将错误作为 API 的响应发送。我想抓住deferred.reject(e); 部分,同时继续.except(500).end(...). 的链条类似:
catch_deferred(request(server).get('/some/path'))
.expect(500)
.end(function(err, res) {
expect(err).to.equal(null);
expect(res.body).to.be.an('object').that.is.empty;
done();
有什么办法吗?我不能使用 try-catch 块,因为它不是例外。我也不能 chai 的 expect().to.throw() 因为没有抛出异常。
【问题讨论】:
标签: javascript node.js mocha.js chai supertest