使用酶测试ReduxForm

时间:2020-04-27 08:17:48

标签: reactjs redux jestjs enzyme redux-form

如何测试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函数调用。
我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

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