我有以下代码来模拟服务中的数据:
providers: [
{ provide: AdminService, useValue: { avcData: { runMode: 'NORMAL' } } }
]
问题在于,当我使用useValue模拟数据时,似乎测试无法初始化服务方法,并且在单元测试中出现以下错误:
TypeError: _this.adminService.toLocalDate is not a function
虽然该方法存在。
我的测试就是这样:
it('should be created', () => {
expect(component).toBeTruthy();
});
有没有办法在不重写/复制方法代码的情况下修复单元测试?
答案 0 :(得分:0)
使用' useValue'选项,您为对象创建新签名。在您的代码中,AdminService是以下结构的对象:
{ avcData: { runMode: 'NORMAL' } }
由于这没有toLocalDate
方法(或代码中使用的任何其他方法),因此会出错。
如果您想使用实际AdminService
课程中提供的方法,则可以使用useClass: AdminService
代替useValue: {}
。在这种情况下,您需要在存根所需的函数上使用间谍对象。