Angular 5 Jasmine单元测试报错:TypeError: resetValues不是函数
这个问题的根源很明确:你创建的DailySalesService mock对象只包含了getSummarySalesDay这一个spy方法,但你的HomeDailySalesComponent的changeDate方法里还调用了服务的resetValues方法——而这个方法在你的mock里根本没定义,所以Jasmine才会抛出TypeError: this.dailySalesService.resetValues is not a function的错误。
解决起来很简单,只需要在创建mock对象时,把组件用到的所有服务方法都列进去就行:
- 修改mock的创建代码,添加
resetValues到spy方法列表中:
const dailySalesServiceMock = jasmine.createSpyObj('DailySalesService', ['getSummarySalesDay', 'resetValues']);
- (可选)如果
resetValues是无返回值的方法,你可以给它设置一个空的mock实现,确保调用时不会有意外:
dailySalesServiceMock.resetValues.and.callFake(() => {});
这样调整后,当component.changeDate调用resetValues时,mock对象里已经存在这个方法的spy,就不会再触发类型错误了。
内容的提问来源于stack exchange,提问作者Lucas_Santos
相关产品推荐
相关产品推荐

