使用酶测试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的主要内容,如果未能解决你的问题,请参考以下文章
无法导入 Reactjs 类以使用 mocha 和酶进行测试