0

我在角度(版本 8)组件 A 和 B 之间传递数据state,例如:

<a routerLink="/componentB" [state]="{data: {hello: 'world'}}">Go To ComponentB</a>

在 ComponentB 中,我正在读取数据:

ngOnInit() {
  this.data = history.state.data.hello;
}

一切都在 live webapp 中工作,但我似乎无法在 jasmine 测试中复制相同的内容。单元测试是这样的:

setup();
...
fixture.nativeElement.querySelector(`a`).click();

fixture.whenStable().then(() => {
  expect(fixture.nativeElement.querySelector(`p`)).toContain('world');
}

导航在添加this.data = ...到之前有效ngOnInit(),但现在出现空指针异常。实际上statenull,但我不知道为什么。实时运行 webapp 时一切正常,但 Jasmine 单元测试失败。

我知道我可以添加history.pushState({data: {hello: 'world'}}, '', '');到设置中,但我希望在单元测试期间将真实数据从组件 A 传递到组件 B。我错过了什么?为什么来自一个组件的数据不会通过 传输到另一个组件state

4

1 回答 1

0

你必须把你的状态推到beforeeach; 就像是:

history.pushState("hello", "world");
于 2022-01-04T21:51:56.777 回答