1

假设您有以下代码:

protected _state = new ReplaySubject<CartState>();

getTransformedState(id: number) {
    return this._state.pipe(map(({ items }) => items[id]));
}

我在另一个组件中得到了这个转换后的 Observable,我订阅了它。

ngOnInit() {
    this.cart.getTransformedState(this.product.id).pipe(takeUntil(this.destroy$)).subscribe((item) => {})
}

深入研究 Rxjs 文档,我们可以看到使用可管道运算符转换一个 Observable,然后订阅“结果”可观察对象也订阅“起源”可观察对象。

Pipeable Operator 本质上是一个纯函数,它将一个 Observable 作为输入并生成另一个 Observable 作为输出。订阅输出 Observable 也会订阅输入 Observable。

我的问题来自项目中提供的单元测试未能完成

it('should have one subscription for product cart item', async(() => {
    const mockSubject = ServiceMock.getItemUpdates(MockProduct);

    component.ngOnInit();
    fixture.detectChanges();

    expect(mockSubject['observers'].length).toEqual(1);
}));
4

0 回答 0