gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:02 25 4
gpt4 key购买 nike

下面的代码基本上从数据库获取用户。下面的代码使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com