How to Test onChange Events in React Testing Library
To test onChange events in React Testing Library, use the fireEvent.change API in the following way:
import React from 'react'
import { fireEvent, render, screen } from '@testing-library/react'
describe('onChange events', () => {
it('should test onChange behavior', () => {
render(<Dropdown />)
const select = screen.getByRole('select')
const testingLibrary = screen.getByRole('option', { name: 'React Testing Library' })
const jest = screen.getByRole('option', { name: 'Jest' })
fireEvent.change(select, { target: { value: 'π' } })
expect(select.value).toBe('π')
expect(testingLibrary.selected).toBe(true)
fireEvent.change(select, { target: { value: 'π΄' } })
expect(select.value).toBe('π΄')
expect(jest.selected).toBe(true)
})
}) To select an option from an HTML select element, you will need to grab the element with either screen.getByTestId or screen.getByRole, and pass it over to fireEvent.change with a target.value object for targeting the right option.
Notice that you can also grab elements by specifying the value of their attributes inside an object, passed as a second parameter to screen.getByRole.
Finally, to test if the correct element is selected, we can use select.value and option.selected for assertions.
expect(select.value).toBe('π΄')
expect(jest.selected).toBe(true)
Rocket Launch Your Career
Speed up your learning progress with our mentorship program. Join as a mentee to unlock the full potential of Webtips and get a personalized learning experience by experts to master the following frontend technologies:






