如何在ActivatedRoute上设置数据以进行观众测试?

时间:2019-12-20 17:48:38

标签: angular unit-testing jestjs angular-spectator

有人知道如何使用Spectator测试组件中已解析的路线数据吗?在我的组件代码中,我获得了Todo数组数据并将其设置为物料表的dataSource。我想测试一下,如果我用Todo()存入ActivatedRoute,它将填充我的dataSource。

我无法通过此测试。我尝试了多种设置route.data的方法。 在线示例均未具体说明如何以这种方式测试路线。

有什么想法吗?

let spectator: SpectatorRouting<ListTodoComponent>;

  const createComponent = createRoutingFactory({
    declarations:[
      DateTimeFormatPipe,
      LoaderComponent
    ],
    imports: [
      HttpClientTestingModule,
      RouterTestingModule,
      MatPaginatorModule,
      FlexLayoutModule,
      MatProgressSpinnerModule,
      MatTableModule,
      MatDialogModule,
      MatButtonModule,
      MatPaginatorModule],
    component: ListTodoComponent
  });

  beforeEach(() => {
    spectator = createComponent();
    spectator.activatedRouteStub.setAllData([new Todo(133,'some 
   title','dsdsd','dsdsds','dsds','dsdss')]);
  });

  it('should populate dataSource with one todo', () => {
    spectator.component.ngOnInit();
    expect(spectator.component.dataSource.data.length).toBe(1);
    expect(spectator.component.dataSource.data[0]).toHaveClass('Todo');
  });

组件代码

 ngOnInit() {
    this.route.data.pipe(
      take(1),
    ).subscribe(res => {
      this.dataSource = new MatTableDataSource(res['data']);
    });

  }

0 个答案:

没有答案