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

Angular 5 Jasmine单元测试报错:TypeError: resetValues不是函数

这个问题的根源很明确:你创建的DailySalesService mock对象只包含了getSummarySalesDay这一个spy方法,但你的HomeDailySalesComponent的changeDate方法里还调用了服务的resetValues方法——而这个方法在你的mock里根本没定义,所以Jasmine才会抛出TypeError: this.dailySalesService.resetValues is not a function的错误。

解决起来很简单,只需要在创建mock对象时,把组件用到的所有服务方法都列进去就行:

  1. 修改mock的创建代码,添加resetValues到spy方法列表中:
const dailySalesServiceMock = jasmine.createSpyObj('DailySalesService', ['getSummarySalesDay', 'resetValues']);
  1. (可选)如果resetValues是无返回值的方法,你可以给它设置一个空的mock实现,确保调用时不会有意外:
dailySalesServiceMock.resetValues.and.callFake(() => {});

这样调整后,当component.changeDate调用resetValues时,mock对象里已经存在这个方法的spy,就不会再触发类型错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:12:12