Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
I can't pass the test with fireEvent.change(getByLabelText());

I am learning testing and there is a test that I can not get right, it is supposed to change the value of the input should call the function onPriceInputChange, but it does not, I also tried from the browser console, the value is set, but the function is not called the input has a onChange={onPriceInputChange} I leave the code of the test and the code of my component, three props go into the component which are priceFrom, priceTo and the onPriceInputChange function. priceFrom and priceTo are part of a useState of a parent component which is set with the onPriceInputChange function also in the parent component. What can I change to make the test pass? I have checked the documentation and everything is apparently ok. the following are the tests:

describe('FilterForm component', () => {
  it('should invoke the onPriceInputChange callback after "price from" input value changed', () => {
    // given
    const onPriceInputChange = jest.fn();
    const { getByLabelText } = render(<FilterForm
      priceFrom=''
      onPriceInputChange={onPriceInputChange}
    />);

    // when
    fireEvent.change(getByLabelText('Price From:'), { target: {
      name: 'priceFrom',
      value: 123
    }});

    // then
    expect(onPriceInputChange).toHaveBeenCalledWith('priceFrom', 123);
  });

  it('should invoke the onPriceInputChange callback after "price to" input value changed', () => {
    // given
    const onPriceInputChange = jest.fn();
    const { getByLabelText } = render(<FilterForm
      priceFrom=''
      onPriceInputChange={onPriceInputChange}
    />);

    // when
    fireEvent.change(getByLabelText('Price To:'), { target: {
      name: 'priceTo',
      value: 456
    }});

    // then
    expect(onPriceInputChange).toHaveBeenCalledWith('priceTo', 456);
  });

and the following is the FilterForm component:

export const FilterForm = (props) => {

  const onPriceInputChange = (e) => {
    props.onPriceInputChange(e.target.name,e.target.value)
  
  }
    

  return (
    <div>
      <label htmlFor="priceFrom">Price From:</label>
      <input
        type="number"
        id="priceFrom"
        name="priceFrom"
        value={parseInt(props.priceFrom)}
        placeholder="Price from..."
        onChange={onPriceInputChange}/>
      <label htmlFor="priceTo">Price To:</label>
      <input
        type="number"
        id="priceTo"
        name="priceTo"
        value={parseInt(props.priceTo)}
        placeholder="Price to..."
        onChange={onPriceInputChange}/>
    </div>
  )
}
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!