【发布时间】:2015-08-04 02:57:50
【问题描述】:
我正在尝试使用 chai 和 Mocha 为 Mongoose 模型函数编写单元测试用例。
模型函数
function getDetails(parameter, fn) {
Model.findOne({
parameter: parameter
})
.lean()
.exec(function(err, document) {
if (err) {
return fn(err, null);
}
return fn(err, document);
});
};
单元测试用例
describe('→ Database model functions.', function() {
it('getDetails() - should fetch and return details from database', function(done) {
model.getDetails(parameter, function(err, document) {
expect(err).to.be.null;
expect(document).not.to.be.null;
expect(document).to.be.an('object');
done();
});
});
});
使用istanbul 运行代码覆盖率报告后,我的分支覆盖率分数很低,因为以下块没有被覆盖。
if (err) {
return fn(err, null);
}
据我了解,这对于未处理的异常(例如数据库关闭等)来说有点笼统。此错误也被设计为冒泡,因此应用程序崩溃,然后我可以修复它。我如何编写一个测试用例来解决这个问题?或者更确切地说,我是否应该尝试涵盖这一点?
【问题讨论】:
-
在另一个测试用例中触发错误并获胜。
-
如何触发错误?断开数据库或类似的东西?
-
我认为在单元测试中根本不应该访问数据库。话虽这么说,您应该模拟您的模型以返回错误并期望它。模拟可以使用 Sinon.js 完成。
标签: node.js mongoose mocha.js chai istanbul