使用酶测试ReduxForm

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用酶测试ReduxForm相关的知识,希望对你有一定的参考价值。

我是Tigran,我有一个问题。如何测试Redux-Form组件?我有这个测试:

describe('<SignIn />', () => {
    let wrapper, store;
    const props = {isWidthSmallThan750: true, classes: {}};

    beforeEach(() => {
        store = mockStore({});
        wrapper = mountComponent(SignUp, props); //equal to mount(Component)
    });

    afterEach(() => {
        wrapper = null;
        store = null;
    });

    it('snapshot testing', () => {
        expect(componentToJSON(SignIn, props)).toMatchSnapshot(); //equal to render.create(Component).toJSON
    })

    it('when form submitted, these actions may happen', () => {
        const form = wrapper.find('form');
        wrapper.find('input').at(0).simulate('change', {target: {value: 'Tigran'}});
        wrapper.find('input').at(1).simulate('change', {target: {value: 'Tigran'}});
        expect(wrapper.find('input').at(0).props().value).toBe('Tigran');
        expect(wrapper.find('input').at(1).props().value).toBe('Tigran');
        form.simulate('submit');
        expect(store.getActions()).toEqual(null);
    })
});

但是当调用form.simulate时,我没有得到onSubmit函数调用。我该如何解决这个问题?

答案

尝试用wrapper.find('form').simulate('submit');代替form.simulate('submit')

最新版本的酶缓存结果,因此它的状态可能是陈旧的。

也尝试wrapper.find('form').props().submit()。我强烈建议您不要使用模拟并且直接调用它,模拟是片状的。

以上是关于使用酶测试ReduxForm的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jest 和酶测试 API 调用?

无法导入 Reactjs 类以使用 mocha 和酶进行测试

如何使用 jest 和酶测试 onClick() 函数和 useState 钩子

让笑话/酶测试等待上下文

使用酶测试多个类名

如何用酶在ReactJS中添加窗口keydown事件的单元测试