我对Jest和Enzyme相当陌生,偶然发现了一个问题:
我有一个渲染Child的Component,也调用了这些child的方法。我通过使用引用实现的。我称这些功能为:
somefunction = () => {
this.myReference.current.childFunction();
this.doSomethingOther();
}
我现在要测试功能 somefunction 。我想检查 doSomethingOther 函数是否被调用。使用浅渲染无法实现这一点。如果未调用this.myReference.current.childFunction();
,则测试将成功。开玩笑不能知道它,因为它只会使表面变浅并因此引发错误。
我可能缺少全面的了解。我想知道是否有人有想法在不使用mount的情况下测试此功能。
答案 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();