onChange 事件在简单单元测试中不会触发



我写了一个非常简单的单元测试,但handleChange函数没有被调用。

import React from 'react';
import { fireEvent, render } from '@testing-library/react';
describe('Component', () => {
test('demo', (done) => {
const handleChange = jest.fn();
const {getByRole} = render(
<input role="slider" type="range" onChange={({currentTarget}) => handleChange(currentTarget.value)}/>
);
fireEvent.change(getByRole('slider'), {currentTarget: {value: 10}});
expect(handleChange).toHaveBeenCalledWith(10);
done();
});
})

知道我做错了什么吗?

fireEvent.change的第二个参数与事件处理程序的事件参数无关。它只有特定的关键字,currentTarget不存在。相反,您应该使用target,它将适用于事件的targetcurrentTarget属性:

fireEvent.change(getByRole('slider'), { target: { value: 10 } });

最新更新