1

我正在尝试使用 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);
}

据我了解,这对于未处理的异常(例如数据库关闭等)有点笼统。此错误也被设计为冒泡,因此应用程序崩溃,然后我可以修复它。我如何编写一个测试用例来解决这个问题?或者更确切地说,我是否应该尝试涵盖这一点?

4

1 回答 1

1

您可以使用Mockgoose等模拟库来测试错误案例 - 特别是,查看在throwError尝试连接时会导致引发错误的选项 - 请参阅文档的这一部分。这应该是您上述测试的单独测试用例。

正如@limelights 在上面的评论中所说(在我看来是正确的),最好在单元测试中完全避免使用真实的数据库。

于 2015-05-22T12:46:26.943 回答