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

Angular单元测试Jest spyOn报错及returnValue替换咨询

Angular单元测试:Jest模拟Observable订阅返回值的正确写法

这是Jest和Jasmine spy API的差异导致的问题——Jasmine用.and.returnValue()的链式写法,但Jest的SpyInstance没有.and属性,得换用Jest自身的mock方法:

直接替换写法

把.and.returnValue()改成.mockReturnValue()即可,你的代码修改后如下:

jest.spyOn(validationFacade, 'validateOrder')
  .mockReturnValue(of(validationResponseMock).pipe(delay(1)));

进阶:自定义模拟逻辑

如果需要根据传入的参数动态返回不同值,可以用.mockImplementation():

jest.spyOn(validationFacade, 'validateOrder')
  .mockImplementation((request: ValidationRequest) => {
    // 这里可以根据request的内容自定义返回结果
    return of(validationResponseMock).pipe(delay(1));
  });

本质原因是Jest的spy API设计和Jasmine不同,它把mock相关方法直接挂在SpyInstance上,不需要通过.and中间层调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:50:27