You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:01:07