reactjs - 如何对屏蔽输入进行单元测试?
问题描述
如何使用 react-testing-library 对屏蔽的输入字段进行单元测试。该组件是使用材料 ui 和 react-hook-form 开发的。在这里,您可以找到代码并在我身边处理示例。提前致谢
测试文件:
let Phone_Input = getByTestId("phone-input");
fireEvent.change(
<InputMask mask="(999) 999-9999">{() => Phone_Input}</InputMask>,
{
target: { value: "9500902621" }
}
);
零件:
<InputMask mask="(999) 999-9999">
{() => (
<TextField
id="standard-required"
name="phone"
label="phone"
placeholder="Enter Phone"
inputProps={{
"data-testid": "phone-input"
}}
/>
)}
</InputMask>
错误:
The given element does not have a value setter
expect(received).toBe(expected) // Object.is equality
Expected: "(950) 090-2621"
Received: "(___) ___-____"
解决方案
我的组件与您的不同,但可能会引导您走向正确的方向。
这就是我的测试的样子:
const propsMock = { mask: sampleMask };
const { getByTestId } = render(<MaskedTextField {...propsMock} />);
const input = getByTestId('maskedtextfield-');
fireEvent.change(input, { target: { value: '9999999999' } });
expect(getByTestId('maskedtextfield-').value).toEqual('(999) 999-9999');
组件重要部分:
<Input
placeholder={placeholder}
disabled={disabled}
onChange={onChange}
onKeyUp={onKeyUp}
onBlur={onBlur}
inputRef={inputRef}
inputComponent={TextMaskCustom as any}
inputProps={{
'data-testid': dataTestId || `maskedtextfield-${label}`,
defaultValue: defaultValue || '',
...getMaskProps(mask),
}}
/>
我的部门是: Input 是一个 material-ui 组件,TextMaskCustom
是react-text-mask
. 在这里工作正常。
推荐阅读
- c# - 如果作为 docker 映像运行,则找不到证书,而作为 IISExpress 运行时返回证书
- python - 如何将 Pydantic BaseModels 列表转换为 Pandas Dataframe
- react-native - 意外的令牌,应为“;” 开玩笑+酶反应原生
- operating-system - TestRealTime:如何使用 Rational Test Real Time 测试实时操作系统
- reactjs - ReactJS 在从 API 获取数据时重新渲染两次以上
- reactjs - TypeError:无法读取 null 的属性“图像”
- java - 如何在 dialogState == COMPLETED、Alexa delegateDialog 之后重新获得控制权
- stata - 修改图形中 X 轴的比例
- excel - 彭博 - 刷新工作簿如何调用
- typescript - TypeScript typeof 和类构造函数问题