react-testing-library - React 测试库 - 多个 fireEvent 不检查文本
问题描述
我想给我的组件发短信。我有带选择的表格和带文本的段落。当我从选择 6 中选择时,段落将文本更改为“6 件”。当我从选择 9 中选择时,段落将文本更改为“9 件”等。
问题是,它只适用于第一次。第二个我在段落中有旧文本。如何刷新每个选择更改?
const { getByTestId } = renderForm();
const textElem = getByTestId('text');
const select = getByTestId('select');
fireEvent.change(select, { target: { value: '6' } });
// works fine
expect(textElem).toHaveTextContent('6 pieces');
fireEvent.change(select, { target: { value: '9' } });
// is still 6 pieces
expect(textElem).toHaveTextContent('9 pieces');
我也尝试过采取行动,但我得到了相同的结果:
act(()=>{
fireEvent.change(select, { target: { value: '6' } });
});
// works fine
expect(textElem).toHaveTextContent('6 pieces');
act(()=>{
fireEvent.change(select, { target: { value: '9' } });
});
// is still 6 pieces
expect(textElem).toHaveTextContent('9 pieces');
我也试过rerender
- 相同的结果。
解决方案
触发更改后,您需要对其进行新的getByTestId()
断言。
fireEvent.change(select, { target: { value: '9' } }); expect(getByTestId('text')).toHaveTextContent('9 pieces')
推荐阅读
- powershell - 在 Powershell 中将 System.Collections.ArrayList 转换为字符串
- multithreading - 在 C 中使用带有分离线程的互斥锁
- python - Date_Range 参数
- haskell - Haskell算术序列的奇怪行为
- python - 我无法为 Heroku 配置我的 Django 应用程序
- matlab - How to plot multiple graphs for different values of step size in MATLAB?
- java - Graph SDK:使用 Java 中的客户端断言创建 authprovider
- apache-flink - 运行 flink 1.12.0 wordcount 示例中的语法无效?
- javascript - HTML/CSS 页脚从页面中间开始,然后移动到底部
- excel - 电源查询以拆分每列的第 n 行