在React Jest中测试组件的隔离功能

时间:2018-09-26 14:23:52

标签: javascript reactjs testing jestjs enzyme

我对Jest和Enzyme相当陌生,偶然发现了一个问题:

我有一个渲染Child的Component,也调用了这些child的方法。我通过使用引用实现的。我称这些功能为:

somefunction = () => {
   this.myReference.current.childFunction();
   this.doSomethingOther();
}    

我现在要测试功能 somefunction 。我想检查 doSomethingOther 函数是否被调用。使用浅渲染无法实现这一点。如果未调用this.myReference.current.childFunction();,则测试将成功。开玩笑不能知道它,因为它只会使表面变浅并因此引发错误。

我可能缺少全面的了解。我想知道是否有人有想法在不使用mount的情况下测试此功能。

1 个答案:

答案 0 :(得分:0)

看看下面的代码,在这里我浅浅地渲染一个组件,然后获取类实例并模拟所需的函数。现在,当我们调用 somefunction 时,我们检查是否已调用 doSomethingOther 。 (假设您正在使用笑话+酶)

const wrapper = shallow(<Comp />);
const inst = wrapper.instance();
inst.myReference = {
    current: {
        childFunction: jest.fn()
    }
}
inst.doSomethingOther = jest.fn();
inst.somefunction();
expect(inst.doSomethingOther).toHaveBeenCalled();