如何在 React 测试库中为 Select Box onChange 方法编写测试用例?
How to write test cases for Select Box onChange Method in React Testing Library?
我有一个 Select Box 并通过 onChange
事件将数据设置为状态。请看下面的代码。任何人都可以帮助我在 React 测试库中为这个 onChange
事件编写案例。
const [optionValue, setOptionValue] = useState({ value: '', label: '' })
const handleOnChange = (option: OptionType): void => setOptionValue(option)
<Select name={title} id={title} placeholder="Choose an Option" options={setOptionsData} defaultOption={optionValue} onChange={e => { handleOnChange(e) }} data-test="options" />
我建议使用 userEvent,它是 React 测试库生态系统的一部分。它允许您编写更接近真实用户行为的测试。示例:**
it('should correctly set default option', () => {
render(<App />)
expect(screen.getByRole('option', {name: 'Make a choice'}).selected).toBe(true)
})
it('should allow user to change country', () => {
render(<App />)
userEvent.selectOptions(
// Find the select element
screen.getByRole('combobox'),
// Find and select the Ireland option
screen.getByRole('option', {name: 'Ireland'}),
)
expect(screen.getByRole('option', {name: 'Ireland'}).selected).toBe(true)
})
查看 this article(我自己写的)以获取有关如何使用 React 测试库测试 select 元素的更多信息。
我有一个 Select Box 并通过 onChange
事件将数据设置为状态。请看下面的代码。任何人都可以帮助我在 React 测试库中为这个 onChange
事件编写案例。
const [optionValue, setOptionValue] = useState({ value: '', label: '' })
const handleOnChange = (option: OptionType): void => setOptionValue(option)
<Select name={title} id={title} placeholder="Choose an Option" options={setOptionsData} defaultOption={optionValue} onChange={e => { handleOnChange(e) }} data-test="options" />
我建议使用 userEvent,它是 React 测试库生态系统的一部分。它允许您编写更接近真实用户行为的测试。示例:**
it('should correctly set default option', () => {
render(<App />)
expect(screen.getByRole('option', {name: 'Make a choice'}).selected).toBe(true)
})
it('should allow user to change country', () => {
render(<App />)
userEvent.selectOptions(
// Find the select element
screen.getByRole('combobox'),
// Find and select the Ireland option
screen.getByRole('option', {name: 'Ireland'}),
)
expect(screen.getByRole('option', {name: 'Ireland'}).selected).toBe(true)
})
查看 this article(我自己写的)以获取有关如何使用 React 测试库测试 select 元素的更多信息。