角度单位测试:"不是一个功能"当使用提供useValue时

时间:2018-03-18 11:26:31

标签: angular unit-testing karma-jasmine

我有以下代码来模拟服务中的数据:

providers: [
        { provide: AdminService, useValue: { avcData: { runMode: 'NORMAL' } } }
      ]

问题在于,当我使用useValue模拟数据时,似乎测试无法初始化服务方法,并且在单元测试中出现以下错误:

TypeError: _this.adminService.toLocalDate is not a function

虽然该方法存在。

我的测试就是这样:

it('should be created', () => {
    expect(component).toBeTruthy();
  });

有没有办法在不重写/复制方法代码的情况下修复单元测试?

1 个答案:

答案 0 :(得分:0)

使用' useValue'选项,您为对象创建新签名。在您的代码中,AdminService是以下结构的对象:

   { avcData: { runMode: 'NORMAL' } } 

由于这没有toLocalDate方法(或代码中使用的任何其他方法),因此会出错。

如果您想使用实际AdminService课程中提供的方法,则可以使用useClass: AdminService代替useValue: {}。在这种情况下,您需要在存根所需的函数上使用间谍对象。