库中的 Mocha 单元测试错误处理

Mocha Unit Test Error Handling from Library

我有下面的代码,基本上从数据库中获取用户。下面的代码使用 Dynamoose 但我假设在许多其他库和包中也有类似的东西。

User.get(searchid, function(err, user) {
    if (err) {
        console.log(err);
        return res.send('error');
    } else {
        //DO LOGIC
    }
});

我已经编写了单元测试来处理上面 else 语句中的所有逻辑。但我想弄清楚是否有一种方法可以编写单元测试来处理代码的 if (err) 部分。基本上,我想编写单元测试以确保如果出现错误,它 returns 是正确的东西,但我会接受我应该编写的其他测试的任何建议。在这种情况下我如何编写测试并用单元测试覆盖这段代码?

你应该模拟 User.get 让它直接执行回调,使用你想要的参数。

为此,您可能有多种可能性,具体取决于您的测试设置。

我用重新布线https://github.com/jhnns/rewire

如果您的代码如下所示:

//myCode.js
var User = require('./model/User');

module.exports = function(){
    User.get(searchid, function(err, user) {
        if (err) {
            console.log(err);
            return res.send('error');
        } else {
        //DO LOGIC
        }
    });
}

基本上你的测试看起来像:

var myCode = rewire("../lib/myCode.js");

...

var UserMock = {
    get: function (searchid, cb) {

        cb(new Error(), null);
    }
};
myCode.__set__("User", UserMock);

myCode.myFunctionCallingUserGet(function (err, data) {
    // Test that you send error.
});