как проверить функцию внутри, если утверждение Жасмин Карма угловой - PullRequest
0 голосов
/ 13 марта 2019

Я новичок в юнит-тестировании.У меня есть компонент, который вызывает службу для отображения списка студентов.

 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)
 });

я получил ошибку Не могу прочитать свойство 'Type' с нулевым значением, и когда я удаляю оператор if из ngOnInit, он работает так, как ожидалось.я делаю неправильно?Пожалуйста, предложите мне решение этой проблемы. Спасибо

1 Ответ

0 голосов
/ 13 марта 2019

Использовать синхронное тестирование, , как показано в документе

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)
}));
...