如何在 if 语句中测试函数 jasmin karma angular

how to test function inside if statement jasmin karma angular

我是单元测试的新手。 我有一个调用服务以显示学生列表的组件。

 getListStudents() {
this.noteService.getStudents({}).subscribe(res => {
  this.students= res
})}

然后我在 ngOnInit() 中调用这个函数

 if(this.currentUser.Type == 'Teacher'){
this.getListStudents()
}

没有 if 语句,测试是正确的,但是有 if 语句,它就失败了

这是我的测试

  it('should call the service  getStudents', () => {
component.currentUser={ "Type": "Teacher"}
let mock = [{
  "ID": 22,
  "name": "paul"
}]
let service: NoteService = TestBed.get(NoteService);
  spyOn(service, 'getListStudents').and.returnValue(of(mock));
  fixture.detectChanges();
  expect(component.students.length).toBe(1)
 });

我收到错误 Cannot read 属性 'Type' of null 并且当我从 ngOnInit 中删除 if 语句时它按预期工作我做错了什么? 请给我一个解决方案来解决这个问题 problem.thank 你

使用同步测试,as shown in the docs

it('should call the service  getStudents', fakeAsync(() => {
  component.currentUser={ "Type": "Teacher"}
  let mock = [{
    "ID": 22,
    "name": "paul"
  }]
  let service: NoteService = TestBed.get(NoteService);
  spyOn(service, 'getListStudents').and.returnValue(of(mock));
  fixture.detectChanges();
  tick();
  expect(component.students.length).toBe(1)
}));