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

标签 javascript node.js unit-testing mocha.js

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

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

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

最佳答案

您应该模拟 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.
});

关于javascript - Mocha 单元测试库中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985683/

相关文章:

c# - 如何为这个业务逻辑代码编写可靠的单元测试?

javascript - 如何从 SDK 插件数据文件夹加载 dll?

javascript - 谷歌地图在 PhoneGap 中加载 map 很慢

适用于 Amazon SES 的 Node.js 模块

node.js - 如何正确地将 Electron nodejs程序构建为.exe?

javascript - Coursera Node.js 斐波那契实现挂起

python - 在 PyCharm IDE 5.0.4 中运行特定的单元测试功能

用于获取对象值的有序数组的 Javascript (lodash) 函数

javascript - 没有选择的 execCommand?

python - Web 抓取的测试驱动开发 (TDD)