无法读取 属性 setNumber of undefined getting in Unit testing 错误
cannot read property setNumber of undefined getting in Unit testing error
我正在尝试对我的代码进行单元测试,但出现以下错误
TypeError: Cannot read property 'setNumber' of undefined
这是我的服务方式
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);
});
我收到此错误的原因是什么?
TypeError: Cannot read property 'setNumber' of undefined
你必须在 beforeEach 测试部分中模拟 dataService
setNumber
方法。
// const mockDataService = jasmine.createSpyObj('YourServiceName', ['methodname']);
const mockDataService = jasmine.createSpyObj('DataService', ['setNumber']);
在此之后,您需要在测试模块的提供程序数组中使用这个 mockDataservice。
providers: [
{provide: Dataservice, useValue: mockDataService }
]
it('should be create data service', () => {
expect(service.setNumber).toHaveBeenCalledWith(null);
});
我正在尝试对我的代码进行单元测试,但出现以下错误
TypeError: Cannot read property 'setNumber' of undefined
这是我的服务方式
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);
});
我收到此错误的原因是什么?
TypeError: Cannot read property 'setNumber' of undefined
你必须在 beforeEach 测试部分中模拟 dataService
setNumber
方法。
// const mockDataService = jasmine.createSpyObj('YourServiceName', ['methodname']);
const mockDataService = jasmine.createSpyObj('DataService', ['setNumber']);
在此之后,您需要在测试模块的提供程序数组中使用这个 mockDataservice。
providers: [
{provide: Dataservice, useValue: mockDataService }
]
it('should be create data service', () => {
expect(service.setNumber).toHaveBeenCalledWith(null);
});