在函数内部开玩笑

杰克

因此,我正在尝试测试是否在表单上调用了handle Submit函数。达到了下面显示的条件,并阻止了表单的提交。我该如何模拟内部的validate函数以返回空对象{}。这将使我的表格有效,然后根据需要提交。

Validate在form.jsx的Form组件之外定义。我正在将其导出,就像导出const validate = {}

    handleSubmit = event => {
        const {args} = this.state;
        let errors = validate(args);
        const isValid = isEmpty(errors)
        if(!isValid) {
            this.setState({args: args})
            event.preventDefault()
        }
        this.setState({args: args})
    }

我的尝试

    it('should handleSubmit when form is submitted', () => {
        const fakeValidate = { validate: () => true };
        const handleSubmit = jest.fn().mockImplementation((cb) => () => cb({ test: 'test' }));
        const wrapper = shallow(<Form form="test" onSubmit={handleSubmit}/>);
        wrapper.find('form').simulate('submit', fakeValidate);
        expect(handleSubmit).toBeCalledTimes(1);
    });

谢谢!

那将是烧瓶

无法模拟在使用的同一模块中定义的函数。为了具有可模拟性,应从另一个模块导入并对其进行模拟jest.mock,或者将其用作某个对象上的方法并通过进行模拟jest.spyOn

由于它与类组件一起使用,因此可以将其定义为方法:

validate() {...}

handleSubmit = event => {
    ...
    let errors = this.validate(args);
    ...
}

并在课堂上被嘲笑:

jest.spyOn(Form.prototype, 'validate').mockReturnValue(...);

或组件实例:

jest.spyOn(wrapper.instance(), 'validate').mockReturnValue(...);

如果validate可重复使用或与功能组件一起使用,则应将其移至另一个模块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

开玩笑-模拟update()函数

来自分类Dev

开玩笑:模拟构造函数

来自分类Dev

开玩笑的模拟不允许在单个测试中解析内部函数

来自分类Dev

TypeError:XXXXXXX不是函数(在开玩笑的同时)

来自分类Dev

从Promise开玩笑的模拟回调函数

来自分类Dev

开玩笑如何测试调用函数的行?

来自分类Dev

角度开玩笑,测试内部是否可见

来自分类Dev

开玩笑抛出TypeError:this.inputEl.focus不是函数#1964

来自分类Dev

开玩笑-断言异步函数引发测试失败

来自分类Dev

开玩笑-ReferenceError:导入的函数未定义

来自分类Dev

为什么开玩笑不调用useEffect挂钩内的函数?

来自分类Dev

开玩笑TypeError:Document.save不是函数

来自分类Dev

开玩笑-函数fs.writefile中的模拟回调

来自分类Dev

开玩笑-dontMock函数无法按预期工作

来自分类Dev

开玩笑/反应/ Mobx:TypeError mobxReact.observer不是函数

来自分类Dev

开玩笑:模拟构造函数以返回错误

来自分类Dev

开玩笑未能使用泛型编译函数

来自分类Dev

无法模拟createQueryBuilder函数typeorm nestjs开玩笑

来自分类Dev

开玩笑的React示例

来自分类Dev

用getSourceAsObjectList()开玩笑

来自分类Dev

开玩笑的自定义匹配器:匹配器内部未定义“ this”

来自分类Dev

开玩笑地模拟一个toPromise函数.toPromise不是一个函数

来自分类Dev

开玩笑抱怨错误...我告诉开玩笑期望

来自分类Dev

与coffeescript jsx开玩笑吗?

来自分类Dev

开玩笑嘲笑特定功能

来自分类Dev

开玩笑比较对象。串

来自分类Dev

导入CSS时开玩笑

来自分类Dev

Vue +开玩笑+打字稿:意外令牌=类静态函数

来自分类Dev

开玩笑的匹配器错误:接收到的值必须是一个函数

Related 相关文章

热门标签

归档