0

我有一个基于 observable 有 2 种不同状态的组件,所以我准备了这个:

describe('Has not ID', () => {
   fixture.detectChanges();
   expect(fixture).toMatchSnapshot();
});

describe('Has ID', () => {
    beforeEach(() => {
      component.getData$ = of({
        label: 'B',
      });
    });

    it('B', async () => {
      fixture.detectChanges();

      fixture.whenStable().then(() => {
        fixture.detectChanges();
        expect(fixture).toMatchSnapshot();
      });
    });
  });

对于测试 A 工作正常,它加载标签“A”,这是在组件中返回真实服务的内容:

  getData$ = this.getTemplateOptionById(this.id);

服务(模拟):

getTemplateOptionById(id: number | null): Observable<myClass> {
    return this.select((s) => {
      if (id) {
        return A;
      } else {
        return B;
      }
    });
  }

该模板非常基本:

<div
  *ngIf="getData$ | async as data">
  {{ data.label }}
</div>

当我运行测试时,生成的快照有 2 个场景,但都是 A.

我究竟做错了什么?

4

0 回答 0