单元测试:TypeError:无法读取未定义的属性“ pipe”

时间:2019-09-16 15:25:34

标签: typescript unit-testing jestjs observable ngrx

我正在尝试为组件中的功能之一编写单元测试,在此示例中,它是“ setup”。 'setup'调用另一个函数'additionalSetup',该函数在执行pipe(take(1))时订阅商店,并获取第一个发射:

private setup() {
    // ...declares/assigns a few variables in the component
    this.additionalSetup() ;
}

private additionalSetup() {
    this.store.pipe(take(1)).subscribe(/*logic here, but you get the idea*/);
}

我的单元测试似乎失败,并显示以下错误:

  

TypeError:无法读取未定义的属性“管道”

在“设置”单元测试中,我尝试模拟“ additionalSetup”:

component.additionalSetup = jest.fn();

这似乎不起作用。我对玩笑还很陌生,但我仍在学习。我将采取什么方法解决此错误?

1 个答案:

答案 0 :(得分:0)

您的组件已经创建,因此它已经调用了component.additionalSetup。 为了解决该问题,您必须在创建组件之前模拟additionalSetup

使用Angular Testing Library

可以轻松完成此操作
 const component = await render(MyComponent, {
    componentProperties: {
      additionalSetup : jest.fn(),
    },
  });

或者您可以实现此yourself