开玩笑的模拟功能未调用

时间:2019-11-01 20:37:42

标签: reactjs testing jestjs

我有以下内容:

`const shallowComponent = (props = {}) => shallow(<myComponent {...defaultProps} {...props} />);

使用instance.debug()时会呈现此标记:

<div className="myDiv">
    <ICWButtonGroup id="font-alignment-options" className="paragraph-style-alignment-options" labels={{...}}>
     <ICWButtonStateful active={true} onClick={[Function: onClick]} />
        <ICWButtonStateful onClick={[Function: onClick]} />
        <ICWButtonStateful onClick={[Function: onClick]} />
    </ICWButtonGroup>
    <ICWInput label="LINE_HEIGHT" value="" onBlur={[Function: onBlur]} onChange={[Function: onChange]} type="text" />
    <ICWInput label="LETTER_SPACING" value="" onBlur={[Function: onBlur]} onChange={[Function: onChange]} type="text" />
</div>

在组件内部有这个道具:

onChange={(event, { value }) => setLineHeight({ value, hasError: false })}

setLineHeight是一个反应useState()钩子。

我的测试:

it('Should execute onChange when called', () => {
    const props = {
     onChange: jest.fn()
    };
    const instance = shallowComponent(props);
    const lineHeightInput = instance.find('ICWInput[label="LINE_HEIGHT"]');
    lineHeightInput.prop('onChange')(undefined, { value: '123' });
    console.log(instance.debug());
    expect(props.onChange).toBeCalled();
});

但是当我运行此测试时,它说未调用onChange。这令人沮丧,因为我在其他地方具有相同的组件,并且此精确测试(几乎逐行进行)完全正常。但是,在其他组件中,我可以在整个标记中看到onChange={[Function: mockConstructor]},但是在这次失败的测试中,我的模拟函数似乎没有在任何地方注册。为什么?

0 个答案:

没有答案