测试没有用 Jest 调用 React prop 方法

IT技术 reactjs jestjs enzyme
2022-07-23 01:39:13

如何测试有条件调用的 prop(callback) 函数

if(this.props.myFun) {
  this.props.myFun();
}

为了测试这一点,我在这里有两种情况: 1. prop 传递给组件的地方

 <ChildComp myFun={value => value } /> and I can test it from the child-
const comp = mountWithIntl(<ChildComp myFun={value => value } />);
expect(comp.instance().props.myFun).toHaveBeenCalled();
  1. props未通过的地方:我尝试喜欢
const comp = mountWithIntl(<MyComp />);
expect(comp.instance().props.myFun).not.toHaveBeenCalled();

但是,由于如果我在安装组件时模拟props,则会调用该方法。但是如何测试未定义或未模拟的props?如果我不通过props并执行以下操作:

expect(comp.instance().props.myFun).not.toHaveBeenCalled();

我会得到:

jest.fn() 值必须是模拟函数或间谍

根据我的代码我不能做请帮忙

1个回答

我认为您无法测试未调用的函数是否不会被调用。您可以做些什么来测试它是否在没有该功能的情况下被渲染。这应该足够了