我正在尝试为在规范文件中导入数据服务的服务创建单元测试。
然后我要调用beforeach方法。
providers: [
{ provide: dataservice}
],
我收到此错误
TypeError:无法读取未定义的属性“ setNumber”
this.dataService.setNumber(null);
根据我添加的以下用户
const spyDataService = jasmine.createSpyObj('DataService', ['setNumber '])
在每个之前
如何摆脱这个错误,我尝试如下所示,但我遇到了错误,并将其修改为
it('should be create data service', () => {
expect(DataService).setNumber;
});
it('should be create data service', () => {
expect(service.setBCNumber).toHaveBeenCalledWith(null);
});
但我仍然遇到相同的错误
在此先感谢您
答案 0 :(得分:0)
您必须提供类而不是实例。如果要提供实例,则必须像这样使用useValue
:
{
provide: DataService,
useValue: dataServiceMock
}
此外,期望是在实例上,而不是类上,因此
expect(DataService).setNumber;
应该是
expect(dataService.setNumber).toHaveBeenCalledWith(null);
您还需要像示例中一样将dataServiceMock设置为模拟实例:
let dataServiceMock: jasmine.SpyObj<DataService>;
beforeEach(() => {
const spyDataService = jasmine.createSpyObj('DataService', ['setNumber ']);
...
{
provide: DataService,
useValue: spyDataService
}
...
我建议您使用官方角度网站进行测试: https://angular.io/guide/testing-services