Мне нужно проверить, правильно ли я инициализировал свои поля или нет на основе значения свойства.Это свойство используется в условии внутри метода, вызываемого по подписке, вызываемой в 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);
}))
пс .: Если я заставлю результат быть ложным внутри компонента, тест пройден.