网站搜索

typescript - 单元测试:TypeError:无法读取未定义的属性 'pipe'


我正在尝试为我组件中的一个函数编写单元测试,在这个例子中,它是 'setup'。'setup' 调用另一个函数 'additionalSetup',该函数在执行 pipe(take(1)) 时订阅 store,并获取第一次发射的数据:

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*/);
}

我的单元测试似乎因为以下错误而失败:

类型错误:无法读取未定义的属性 'pipe'

在 'setup' 单元测试中,我尝试模拟 'additionalSetup':

component.additionalSetup = jest.fn();

这似乎不起作用。我对 Jest 还比较新,还在学习。我应该采取什么方法来解决这个错误?

答案#1

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

这可以很容易地使用 Angular 测试库 完成

 const component = await render(MyComponent, {
    componentProperties: {
      additionalSetup : jest.fn(),
    },
  });

或者你可以自己实现这个