首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为观众测试在ActivatedRoute上设置数据?

如何为观众测试在ActivatedRoute上设置数据?
EN

Stack Overflow用户
提问于 2019-12-20 17:48:38
回答 1查看 483关注 0票数 1

是否有人知道如何使用Spectator测试组件中已解析的路由数据?在我的组件代码中,我获取Todo数组数据,并将其设置为dataSource表。我想测试如果我用Todo()存根ActivatedRoute,它将填充我的dataSource。

我不能让这个测试开始工作。我尝试过多种设置route.data的方法。网上的任何一个例子都没有具体说明如何以这种方式测试路由。

有什么想法吗?

代码语言:javascript
复制
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');
  });

组件代码

代码语言:javascript
复制
 ngOnInit() {
    this.route.data.pipe(
      take(1),
    ).subscribe(res => {
      this.dataSource = new MatTableDataSource(res['data']);
    });

  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-12 20:44:41

如果您想设置数据,可以在初始的createRoutingFactory参数中这样做:

代码语言:javascript
复制
const createComponent = createRoutingFactory({
    data: {
        foo: 'bar'
    }
    declarations:[
      DateTimeFormatPipe,
      LoaderComponent
    ],
    imports: [
      HttpClientTestingModule,
      RouterTestingModule,
      MatPaginatorModule,
      FlexLayoutModule,
      MatProgressSpinnerModule,
      MatTableModule,
      MatDialogModule,
      MatButtonModule,
      MatPaginatorModule],
    component: ListTodoComponent
  });

在您的示例中,您使用的是setAllData,这是我在启动TestBed之后才会在单个测试中使用的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59429449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档