Я не понимаю, почему .getValue()
возвращает значение по умолчанию для наблюдаемого, а не последнее выбранное значение.При тестировании Observable он корректно возвращает испущенное значение.
class TestA {
readonly aSource: BehaviorSubject<number> = new BehaviorSubject(null);
getA(): number {
return this.aSource.getValue();
}
promise(): void {
Promise.reject()
.catch(() => {
this.aSource.next(2);
console.log(this.getA()); // Outputs: 2
});
}
}
describe('TestA', () => {
it('promise', () => {
const a = new TestA();
a.promise();
// Test 1 OK
expect(a.aSource.asObservable()).toBeObservable(hot('a', {a: 2}));
// Test 2 FAIL (returns null)
expect(a.aSource.getValue()).toEqual(2);
// Test 3 FAIL (returns null)
expect(a.getA()).toEqual(2);
});
});
Чтобы уточнить, метод getValue()
отлично работает, не проверяя тесты, он только дает сбой при тестировании с Jest.
Спасибо!