我试图为UserDetailsService
创建存根数据。
所以我创建了一个间谍obj,并在提供者中使用。
这是我的代码
beforeEach(async (() => {
const mockUserDetailService = jasmine.createSpyObj('UserDetailsService',
['getUserRolePrivilegesByScreen']);
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule, MatDialogModule, BrowserAnimationsModule, RouterTestingModule,
MatMenuModule, MatFormFieldModule, MatInputModule, MatPaginatorModule, MatTableModule,
MatSortModule, MatIconModule, MatCardModule
],
declarations: [DashboardComponent],
providers: [
{ provide: DataService, useValue: spyDataService },
{ provide: UserDetailsService, useValue: mockUserDetailService},
{ provide: MAT_DIALOG_DATA, useValue: {} },
{ provide: MatDialogRef, useValue: {} },
{ provide: LayoutUtilsService, useValue: {} }
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
我收到这个错误
TypeError:无法读取未定义的属性"canRead">
这是我在ngOnInit
下的ts
代码
this.dataService.setNumber(null);
if (this.userdetailservice.getUserHighestRole() == null) {
this.router.navigateByUrl('login');
} else {
this.screenPrivilege = this.userdetailservice.getUserRolePrivilegesByScreen('D&B');
this.userRole = this.userdetailservice.getUserHighestRole();
if (this.userRole == 'Fin' || this.userRole == 'Super') {
this.columnToDisplay = [...this.Fin];
this.landingPage = 'Fin';
this.exportHeaders = ['No', 'Numb', 'Amout', 'Date', 'Salary', 'Status'];
} else if (this.userRole == 'Gen') {
this.columnToDisplay = [...this.Gen];
this.landingPage = 'Gen';
this.exportHeaders = ['No', 'Numb', 'Amout', 'Date', 'Salary', 'Status'];
} else {
this.landingPage = 'Admin';
this.columnToDisplay = [...this.Admin];
this.exportHeaders = ['No', 'Numb', 'Amout', 'Date', 'Salary', 'Status'];
}
if (this.screenPrivilege.canRead == 'Y') {
this.loadData();
this.loadPeriod();
}
}
从您提供的代码片段中,您似乎创建了一个模拟变量:
const mockUserDetailService = jasmine.createSpyObj(...);
但mock没有返回任何内容。也许是这样的:
mockUserDetailService.getUserRolePrivilegesByScreen.and.returnValue({canRead: 'Y'});