Как шпионить за методом, вызываемым в подписке внутри ngOnInit в тестовой спецификации Angular? - PullRequest
0 голосов
/ 22 января 2019

Мне нужно проверить, правильно ли я инициализировал свои поля или нет на основе значения свойства.Это свойство используется в условии внутри метода, вызываемого по подписке, вызываемой в ngOnInit.Я использую шпиона, чтобы вернуть логическое значение в качестве фиктивного значения для этой спецификации.Проблема заключается в том, что между вызовом и действием spyOn существует задержка, и хотя шпион изменяет значение свойства, кажется, что оно было недостаточно быстрым.

component.ts

//Value I want to test
value;

//This is the property I need to check
get isThisTrue() {
    return this.externalService.isTrue();
}

ngOnInit() {
this.otherService.getSomething().subscribe(res => {
  this.method();
   })
}

method() {
  if(this.isThisTrue) {
   this.value = 1;
  } else {
     this.value = 2;
}

component.spec.ts

//That is my failing test.
it('should be 2', inject([ExternalService], (service) => {
  spyOn(service, 'isTrue').and.returnValue(false);
  component.ngOnInit();
  fixture.detectChanges();
  expect(value).toBe(2);
}))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...