【发布时间】:2020-05-22 21:12:00
【问题描述】:
我正在使用 Jest & Spectator 在 Angular 9 中工作,并尝试为组件编写单元测试。 问题是在我的 ngOnInit() 中,我有一个 forkJoin 对我的外观进行一些调用,然后在订阅中将返回的值分配给正确的变量。
当我的测试运行时,我得到这个错误:
TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
81 | myData1: this.facade1.findThisThing(),
82 | myData2: this.facade2.findThatThing(),
> 83 | }).subscribe(data => {
| ^
84 | this.data1 = data.myData1.values;
85 | this.data2 = data.myData2.values;
我如何模拟这个订阅/处理它?
组件:
ngOnInit(): void {
forkJoin({
myData1: this.facade1.findThisThing(),
myData2: this.facade2.findThatThing(),
}).subscribe(data => {
this.data1 = data.myData1.values;
this.data2 = data.myData2.values;
});
}
当我通过 createComponentFactory 方法创建组件时,我想可能将它放在 provider 数组中,在 component.spec 中,但这似乎没有帮助。
component.spec:
const createComponent = createComponentFactory<ComponentUnderTest>(
{
component: ComponentUnderTest,
mocks: [
...
]
providers: [
{
provide: 'subscribe',
useValue: jest.fn()
}
],
shallow: true,
},
);
任何帮助将不胜感激。
非常感谢 Stack Overflow 社区!
【问题讨论】:
标签: angular unit-testing rxjs fork-join