gpt4 book ai didi

reactjs - 测试react-final-form更改事件

转载 作者:行者123 更新时间:2023-12-03 14:24:41 26 4
gpt4 key购买 nike

有人可以告诉我如何测试这个简单的行为吗?我已经尝试解决这个问题很长时间了,我希望我只是错过了一些东西,因为更改事件应该很容易测试。

我尝试调用 onChange 而不是 simulatewrapper.update()await new Promise(resolve => setTimeout(解决))没有结果。

import * as React from 'react';
import { Form, Field } from 'react-final-form';
import { mount } from 'enzyme';


it('change event', () => {
const wrapper = mount(
<Form onSubmit={jest.fn()}>
{() => (
<Field name="name">
{({input}) => <input value={input.value} onChange={input.onChange} />}
</Field>
)}
</Form>
)

expect(wrapper.find('input').prop('value')).toEqual('');
wrapper.find('input').simulate('change', { target: { value: 'blue cheese' } } );
expect(wrapper.find('input').prop('value')).toEqual('blue cheese');
});

这个测试惨败:

    Expected value to equal:
"blue cheese"
Received:
""

最佳答案

我认为您可能需要向输入添加引用并直接在其上模拟事件:

it('change event', () => {
const wrapper = mount(
<Form onSubmit={jest.fn()}>
{() => (
<Field name="name">
{({input}) => <input ref='myinput' value={input.value} onChange={input.onChange} />}
</Field>
)}
</Form>
)
wrapper.ref('myinput').simulate('change', { target: { value: 'blue cheese' } } );
}

编辑:

但是,您需要确保 input.onChange 函数实际使用事件值并最终更改 input.value(可能通过 setState)。

请参阅此处的类似问题:

Enzyme simulate an onChange event

关于reactjs - 测试react-final-form更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183579/

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