reactjs - 使用 testing-library 测试 cleave.js 组件
问题描述
我正在尝试使用测试库测试组件。我面临的问题是如何在input
. 通常这可以通过以下方式实现:
const inputName = screen.getByPlaceholderText(/name/i)
fireEvent.click(inputName)
fireEvent.change(inputName, { target: { value: 'test name' } })
但在我的情况下,我使用库cleave.js
来格式化输入,似乎fireEvent.change
无法引入文本。
有谁知道如何解决这个问题?
解决方案
我建议您使用@testing-library/user-event
来测试这样的交互。
假设您有以下呈现 Cleave.js 信用卡输入的组件。
const TestComponent = () => {
return (
<Cleave placeholder="Enter CC number" options={{ creditCard: true }} />
);
};
您可以在测试中使用@testing-library/user-event
'type
函数来模拟用户的输入。
import { screen, render } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
it('tests formatted input', () => {
render(<TestComponent />);
const input = screen.getByPlaceholderText('Enter CC number');
userEvent.type(input, '123412345123456');
expect(input.value).toBe('1234 12345 123456');
});
推荐阅读
- sql - 如何从一个表中为另一个表中的每个唯一记录选择 100 条记录
- reactjs - 反应路由器链接与路径名称状态和数据小部件
- java - 为什么我不能使用这个方法的变量?
- sql - 新列的 SQL 不同分组依据
- angular - 在 angular8 的电子商务网站下订单后如何重置 observable?
- java - Docker 阻止挂载的卷
- javascript - 如何动态检查复选框是否在另一个表 Javascript/PHP 中?
- c++ - 实现二叉搜索树时对类的怀疑
- html5-canvas - 如何确保图像在fabric.js中转换(移动,缩放)时始终包含整个剪辑矩形?
- reactjs - m段远程语音描述发送参数设置失败