我有使用swagger定义的Javascript REST api端点。在我的控制器中,我正在记录传入请求中的IP地址。
这工作得很好,但是现在我尝试添加Jest测试来覆盖,每次运行测试时都会抛出错误
module.exports.execute = async function execute (req, res) {
try {
log.info("Start processing request from client IP="+req.connection.remoteAddress);
... do some stuff
log.info("Finished processing request from client IP="+req.connection.remoteAddress);
} catch(err) {
log.error("Error caught in Address controller =>" + err.message);
utils.writeJson(res, err.message, 500);
}
};
当我执行测试时,我在控制器中陷入错误=>无法读取未定义的属性'remoteAddress'
当我注释掉调用req.connection.remoteAddress的行时,一切都很好,我得到了覆盖,但不适用于这两行。
我猜问题是req.connection.remoteAddress是属性而不是函数。
有没有一种方法可以模拟此调用的响应以返回像1.1.1.1这样的状态字符串?
任何帮助表示赞赏
最佳答案
在考虑@Will Alexander的第一条评论中的问题之后,我添加了此内容(第二行),现在一切都很好。谢谢威尔
let mockReq = _.set({},'swagger.params.entity.value', JSON.stringify({ fail: false}));
mockReq.connection = _.set({},'remoteAddress', '1.1.1.1');