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