【发布时间】:2018-03-18 11:26:30
【问题描述】:
我有以下代码模拟来自服务的数据:
providers: [
{ provide: AdminService, useValue: { avcData: { runMode: 'NORMAL' } } }
]
问题是,当我使用 useValue 模拟数据时,似乎测试无法初始化服务方法,并且在我的单元测试中收到以下错误:
TypeError: _this.adminService.toLocalDate is not a function
虽然方法存在。
我的测试是这样的:
it('should be created', () => {
expect(component).toBeTruthy();
});
有什么方法可以在不重写/复制方法代码的情况下修复单元测试?
【问题讨论】:
-
虽然该方法存在 - 它不存在,您只是模拟了该服务并且没有提供 toLocalDate 方法。
-
@estus 我还需要重写/复制单元测试中的方法吗?
-
如果被测试的方法使用它们,比是,它们应该是茉莉间谍。
-
@estus 你能举个例子吗?目前我只是想测试该组件是否已创建,该方法是在 init 上调用的。如果我必须复制该方法,我无法理解您的评论。
-
useValue: { toLocalDate: jasmine.createSpy('toLocalDate'), ... }.
标签: angular unit-testing karma-jasmine