我正在尝试对我的代码进行单元测试,但出现以下错误
类型错误:无法读取未定义的属性“setNumber”
这是我的服务方法
setNumber(number) {
this.number = number;
}
这段代码在 ts 中有
this.dataService.setNumber(null);
这是我的规范代码。
beforeEach(async(() => {
const spyDataService = jasmine.createSpyObj('DataService', ['setNumber'])
TestBed.configureTestingModule({
imports: [HttpClientTestingModule, MatDialogModule, BrowserAnimationsModule, RouterTestingModule, MatMenuModule, MatFormFieldModule, MatInputModule, MatPaginatorModule, MatTableModule, MatSortModule, MatIconModule, MatCardModule,],
declarations: [DashboardComponent],
providers: [
{ provide: DataService, useValue: spyDataService },
{ provide: MAT_DIALOG_DATA, useValue: {} },
{ provide: MatDialogRef, useValue: {} },
{ provide: LayoutUtilsService, useValue: {} }
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
it('should be create data service', () => {
expect(service.setNumber).toHaveBeenCalledWith(null);
});
这里有什么问题,为什么我收到此错误
类型错误:无法读取未定义的属性“setNumber”
您必须dataService
setNumber
在每个测试部分之前模拟内部方法。
// const mockDataService = jasmine.createSpyObj('YourServiceName', ['methodname']);
const mockDataService = jasmine.createSpyObj('DataService', ['setNumber']);
在此之后,您需要在测试模块的 providers 数组中使用这个 mockDataservice。
providers: [
{provide: Dataservice, useValue: mockDataService }
]
it('should be create data service', () => {
expect(service.setNumber).toHaveBeenCalledWith(null);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句