我不明白为什么.getValue()
返回 Observable 的默认值而不是发出的最后一个值。在测试 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 测试时失败。
谢谢!