【发布时间】:2020-08-01 04:23:00
【问题描述】:
我正在尝试为我有一个用户模型的 Express 应用程序编写一些测试。我的一种方法如下所示:
let user = await User.findById(req.params.userId);
user.name = req.body.name || user.name;
user.password = req.body.password || user.
user = await user.save();
代码运行正常,但是当我测试它时,Jest 抱怨:
TypeError: user.save is not a function
现在我正在像这样嘲笑我的整个用户模型:
jest.mock('../../models/User');
我试图像这样模拟保存功能,但没有任何改变:
jest.spyOn(User.prototype, 'save')
.mockImplementationOnce(() => Promise.reject('fail update'))
正如我之前所说,代码运行良好。我在运行服务器时没有收到此错误。
然而,发生了一件奇怪的事情:当我运行测试时,我从猫鼬那里得到了这个警告
Mongoose:看起来您正在尝试使用 Jest 的默认 jsdom 测试环境来测试 Mongoose 应用程序。请务必阅读 Mongoose 关于配置 Jest 以测试 Node.js 应用程序的文档:http://mongoosejs.com/docs/jest.html
我阅读了文档,它说的是在 Jest 配置文件中将 testEnvironment 设置为“节点”,我已经在这样做了。这是我的 jest.config.js 文件:
module.exports = {
testEnvironment: 'node'
};
但是我不断收到警告。
这是我的测试脚本:
jest --watchAll
我们将不胜感激。提前致谢
【问题讨论】:
标签: javascript node.js unit-testing express jestjs