【发布时间】:2020-04-01 08:35:56
【问题描述】:
我使用Spectator 编写我的Angular 8 测试并使用Jest 运行它们。根据the README,我可以使用setInput() 将我的值分配给有效的字段名称。问题是在创建组件之后验证输入,但在此之前我需要它,因为我在 ngOnInit 方法中使用它进行初始化:
// item.component.ts
@Input() items: Items[] = [];
ngOnInit(): void {
// do something with this.items
// read query param 'page' and use it for something
}
与
// item.component.spec.ts
let spectator: SpectatorRouting<ItemComponent>;
const createComponent = createRoutingFactory({
component: ItemComponent,
queryParams: {page: 1}
});
beforeEach(() => spectator = createComponent());
it('test items', () => {
spectator.setRouteQueryParam('page', '2');
spectator.setInput("items", myItemsList);
});
旁观者将正确设置 queryParam page 和 Input items,但前提是组件已经创建。在组件创建期间ngOnInit 将使用page == 1 和items == [] 进行初始化。
我可以在每个方法中创建旁观者组件并分别传递 queryParams,但我找不到在 createRoutingFactory 参数中传递输入的方法。
或者,我可以使用 a host component factory 传递我的输入参数,但我相信我无法传递查询参数。
【问题讨论】:
标签: angular jestjs angular-spectator