You need to enable JavaScript to run this app. NestJS控制器单元测试:模拟Service的delete方法返回值不匹配问题
优惠活动
大模型
产品
解决方案
定价
更多

NestJS控制器单元测试:模拟Service的delete方法返回值不匹配问题

问题解决方案

问题原因

  • 你的Service层delete方法是async修饰的异步方法,返回值为Promise类型,控制器直接调用该方法,因此控制器的delete方法同样返回Promise对象
  • 你使用mockReturnValue为异步方法设置返回值,不符合实际运行时的返回类型;同时断言时未await控制器方法的执行结果,直接将未完成的Promise实例和预期数值对比,导致报错。

修复方案

  1. 将mock返回值的方法从mockReturnValue替换为mockResolvedValue,模拟异步方法的成功返回结果
  2. 断言时添加await关键字,等待异步方法执行完成拿到实际返回值后再做对比

修正后的测试用例代码

it('testing delete', async () => {
    mockService.delete.mockResolvedValue(5);
    expect(await controller.delete(5)).toEqual(5);
}) 

如果需要模拟异步删除失败的场景,可使用mockRejectedValue方法设置抛出的错误信息。

内容的提问来源于stack exchange,提问作者Etfrerrr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:36:00