reactjs - Hur man enhetstestar en forwardRef-inkapslad komponent med react-testing-library?
Komponenten som är omsluten med forwardRef verkar inte ställa in ref eftersom följande test misslyckas med detta fel:
Error: Uncaught [TypeError: Cannot read properties of null (reading 'focus')]
Det fungerar i webbläsaren, bara testet misslyckas.
Komponenten:
export const SelectFormItem = forwardRef(
<VT extends SelectValue = SelectValue>(
{ name, label, rules }: Props<VT>,
ref: React.Ref<RefSelectProps>
) => {
return (
<Form.Item name={name} label={label} rules={rules}>
<Select ref={ref} />
</Form.Item>
)
}
)
SelectFormItem.displayName = 'SelectFormItem'
Det misslyckade testet:
describe('BEHAVIOR', () => {
test('ref.current.focus() sets focus on component', () => {
const Wrapper = () => {
const ref = useRef<RefSelectProps>(null)
return (
<Form initialValues={{ value: 'Value 1' }}>
<SelectFormItem mode='multiple' name={'value'} label={'TheValue'} options={Options} readOnly={true} ref={ref}/>
<Button onClick={() => ref.current.focus()}>Focus</Button>
</Form>
)
}
render(<Wrapper />)
screen.getByText('Focus').click()
})
})