测试Jest是否尚未调用React prop方法

时间:2019-08-05 10:47:56

标签: reactjs jestjs enzyme

  

我如何测试有条件调用的prop(callback)函数   我有一个在以下条件下将prop函数传递给它的孩子的组件:

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

要对此进行测试,我在这里有两种情况: 1.道具传递到组件的地方

 <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. 道具没有通过的地方:我想
  2.   
const comp = mountWithIntl(<MyComp />);
expect(comp.instance().props.myFun).not.toHaveBeenCalled();

但是,由于如果我在安装组件时模拟道具,    方法将被调用。但是我该如何测试未定义或未模拟的    支柱?    如果我不通过道具而做:

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

我会得到:

  

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

我无法按照我的代码执行    请帮助

1 个答案:

答案 0 :(得分:1)

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