gpt4 book ai didi

javascript - Enzyme/Jest 静态方法模拟未运行

转载 作者:行者123 更新时间:2023-11-30 19:25:39 24 4
gpt4 key购买 nike

我正在尝试测试一个导入的静态方法,该方法应该在单击按钮时运行。这是应该运行测试的组件:

const NextButton = (props: ISubmitButtonProps) => (
<button
onClick={Service.goToNext}
className="col-2 submit"
type="submit"
disabled={props.submitting}>
Next
</button>
);

export default NextButton;

现在,我想测试 goToNext 方法是否真的在运行。为此,我使用了 here 中的示例并添加了一个看起来不错的模拟,如下所示:

const goToNextMock = jest.fn();
jest.mock('Services/service', () => ({
default: class {
public static goToNext() {
goToNextMock(); //the jest.fn from above
}
}
})
);

后来为它写了测试,简单的模拟点击事件,然后检查jest.fn()是否运行:

it('should call goToNext on button click', () => {
//button is set before as shallow(<NextButton submitting={false}/>);
button.simulate('click');
expect(goToNext).toHaveBeenCalled();
})

问题是,原因不明,测试没有持续。给我一个

Expected mock function to have been called.

编辑:尝试以这种方式模拟时会出现相同的结果(注意额外的 preventDefault()

it('should call goToNextReport on button click', () => {
const mock = jest.fn();
Service.goToNext = mock.bind(Service);

button.simulate('click', { preventDefault() {} });

expect(mock).toHaveBeenCalled();
})

我对 JEST 和 js 测试还很陌生。看起来模拟已经正确完成,但我仍然无法检查方法。

关于这个主题有什么想法吗?所有的帮助都会很棒!编辑:这个问题也被提交到 JEST github channel :https://github.com/facebook/jest/issues/8695

最佳答案

试试这个:

jest.mock('Services/service', () => ({
goToNext: jest.fn()
}));

关于javascript - Enzyme/Jest 静态方法模拟未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56949159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com