NestJS测试中Jest的.toHaveBeenCalledWith()断言失效问题排查
NestJS + Jest测试问题:persistAndFlush调用断言失败
问题描述
正在为users.service.ts编写测试,需要验证update方法中用户仓库的persistAndFlush()方法是否被传入正确数据调用。但执行测试时,Jest的.toHaveBeenCalledWith()断言失败,提示该方法调用次数为0。
相关代码
users.service.ts
核心update方法逻辑:通过Object.assign更新用户属性后,调用仓库的persistAndFlush方法。
user-repo.mock.ts
定义Mock仓库的findOne和persistAndFlush方法。
users.service.spec.ts
在TestingModule中注入Mock仓库,并编写对应的测试用例。
已尝试的排查步骤
- 在
.spec.ts文件中本地定义Mock仓库 - 在
beforeEach()钩子中实例化mockRepo - 在测试用例中重写
persistAndFlush的实现 - 使用
.mockResolvedValue()处理异步逻辑
环境信息
- Ubuntu 22.04.1 LTS
- Node.js 18.12.1
- NestJS ^9.0.0
- Jest 28.1.3
请求帮助
请问这是Jest集成的Bug,还是代码封装存在问题?同时希望能提供无需修改update方法签名的替代验证方式。
内容的提问来源于stack exchange,提问作者Bundologus
相关产品推荐
相关产品推荐

