【发布时间】:2021-06-03 17:00:20
【问题描述】:
我开始使用 Jest 和 react-testing-library 创建单元测试 我不确定为什么会失败:
Component:
const CheckboxInput: React.FC<Props> = ({ id, color, height, width, border, isChecked, handleChange
}) => {
return(
<input aria-label="checkbox-input" type="checkbox" checked={isChecked} onChange={(e)
=>handleChange(id, e)} />
)
}
测试:
describe('Test CheckboxInput component', () => {
afterEach(cleanup);
const handleChangeMock = jest.fn();
const setup = () => {
const utils = render(
<CheckboxInput
id={1}
color={'#000'}
height={'15px'}
width={'15px'}
border={'1px solid #000'}
isChecked={false}
handleChange={handleChangeMock}
/>,
);
const input = utils.getByLabelText('checkbox-input') as HTMLInputElement;
return {
input,
...utils,
};
};
test('CheckboxInput initial value ', () => {
const { input } = setup();
expect(input.checked).toBe(false);
fireEvent.change(input, { target: { checked: true } });
expect(input.checked).toBe(true);
expect(handleChangeMock).toHaveBeenCalledTimes(1);
});
});
任何见解将不胜感激
【问题讨论】:
-
您的
onChange在手动测试期间是否正常触发? -
是的。 onChange 方法适用于手动测试
-
@Shira 添加了一个工作代码沙箱。打开沙盒并访问
tests标签。
标签: reactjs jestjs react-testing-library ts-jest