【发布时间】:2022-01-15 09:25:32
【问题描述】:
为了测试输入,它的工作原理如下:
it('test input', () => {
const { getByTestId, getByLabelText } = render(<MyComponent />);
const myButton = getByTestId('submit-button');
expect(myButton).toBeInTheDocument();
fireEvent.change(getByLabelText('first-name'), {
target: { value: 'ted' }
});
// do something
});
上述测试是将first-name输入的值设置为“ted”并继续前进。
我想做类似的事情,但要使用下拉选择器。
这是组件:
<SelectInput
label='my-dropdown'
onChange={onChange}
options={myOptions}
/>;
myOptions 是这个形状的数组:
const myOptions = [
{ id: '0', name: 'zero' },
{ id: '1', name: 'one' },
{ id: '2', name: 'two' }
];
它在应用程序中运行良好,这部分没有错误。
这里是测试,我做了一些但没有用:
it('test dropdpwn', () => {
const { getByTestId, getByLabelText } = render(<MyComponent />);
const saveButton = getByTestId('submit-button');
expect(saveButton).toBeInTheDocument();
fireEvent.change(getByLabelText('my-dropdown'), {
target: { value: { id: '0', name: 'zero' } }
});
// do something
});
上面的代码不起作用,它没有使用该值设置下拉菜单。
关于如何解决这个问题的任何想法?不确定它是否重要,但所有这些输入都在 react-hook-form 中,最后它应该测试 onSubmit 是否正常工作(只有在设置了所有输入时才有效)。
【问题讨论】:
-
你可以试试:
target: { value: 'zero' },因为你是value我猜是name键 -
@SomShekharMukherjee 试过了,但不幸的是还是不行
-
啊,
select?对于这些,我总是必须针对特定选项并模拟/触发点击。
标签: javascript reactjs typescript unit-testing react-testing-library