У моей команды есть тестовая утилита в нашем проекте, которая позволяет нам легко выбирать элемент, потратив слишком много времени, пытаясь понять, как это сделать правильно.Вы можете поделиться этим здесь, чтобы надеяться помочь другим.
Это не зависит от каких-либо внутренних воздействий или насмешек React Select, но требует, чтобы вы установили <label>
, который имеет for
, связывающий со входом React Select,Он использует метку для выбора заданного значения выбора точно так же, как и пользователь на реальной странице.
const KEY_DOWN = 40
// Select an item from a React Select dropdown given a label and
// choice label you wish to pick.
export async function selectItem(
container: HTMLElement,
label: string,
choice: string
): Promise<void> {
// Focus and enable the dropdown of options.
fireEvent.focus(getByLabelText(container, label))
fireEvent.keyDown(getByLabelText(container, label), {
keyCode: KEY_DOWN,
})
// Wait for the dropdown of options to be drawn.
await findByText(container, choice)
// Select the item we care about.
fireEvent.click(getByText(container, choice))
// Wait for your choice to be set as the input value.
await findByDisplayValue(container, choice)
}
Он может использоваться следующим образом:
it('selects an item', async () => {
const { container } = render(<MyComponent/>)
await selectItem(container, 'My label', 'value')
})