javascript - 如何在使用 Jest 测试 Node.js 应用程序时在调用的函数中模拟方法
问题描述
关于同样的问题有很多问题,我已经尝试解决很多问题,但我似乎找不到正确的答案。
我正在编写一些单元测试来测试使用 Jest 库的功能。
我有一个名为 postController.js 的控制器,它具有我正在测试的功能,您可以在下面看到
postController.js
const globalResponseHandler(item1, item2, item3) {
// do something
}
exports.createPost = async (req, res, next) => {
const doc = Post.create({ userObj });
globalResponseHandler(doc, 201, res);
}
我有一个测试文件来测试 postController
postController.test.js
const postController = require('./postController');
const Post = require('./models/postModel');
const httpMocks = require('node-mocks-http');
Post.create = jest.fn();
let req, res, next;
beforeEach(() => {
req = httpMocks.createRequest();
res = httpMocks.createResponse();
next = null;
});
describe('PostController.createPost', () => {
it('should call Post.create', async () => {
await postController.createPost(req, res, next);
expect(Post.create).toBeCalled();
}
}
因此,如果我删除 globalResponseHandler 处理程序方法,则测试通过
但是如果我添加 globalResponseHandler 方法,它会引发以下错误
承诺被拒绝,原因是“TypeError:无法读取未定义的属性'_id'”。]
据我了解,它正在调用需要模拟的 globalResponseHandler 函数。
如何模拟未导出的此类功能?
解决方案
推荐阅读
- sql - SQL动态运行总计
- angular - 科尔多瓦成功回调中的角度调用不起作用
- smalltalk - 如何更改 Pharo 中类的实例变量?
- docusignapi - 无法启动文档生成。请稍后再试或联系您的管理员寻求帮助。[103]
- kotlin - 如何结束/关闭 MutableSharedFlow?
- json - matchJsonPath 抛出警告为 2020-04-24 15:49:47.220 警告:JSON 路径表达式 '$.xxx'
- android - 尝试在使用房间和网络绑定资源类时获取数据
- java - 如何在Java中旋转以空格分隔的整数字符串?
- python - 跨类的多个实例仅调用一次函数
- tkinter - 如何在 Tkinter 中更改按钮文本的大小