为了账号安全,请及时绑定邮箱和手机立即绑定

Jest/react-testing-library:点击一个按钮没有更新测试中的值

Jest/react-testing-library:点击一个按钮没有更新测试中的值

侃侃尔雅 2023-05-18 10:47:37
初始问题我有一个简单的递增/递减组件。它显示了一个数字计数和 2 个递增或递减 1 的按钮。还有一个输入;如果在输入中提供了数值,则按钮使用输入值而不是 1 来增加/减少。我有这个测试:it(`should increment by input value, if value > 0`, () => {  const { input } = setup();  // Change input value to 4  fireEvent.change(input, {target: { value: 4}});  // Find and click +n button  const btn = screen.getByText(`+n`);  fireEvent.click(btn);  // Find and check updated count  const updatedCount = parseInt(screen.getByTestId(`count`).textContent, 10)  expect(updatedCount).toBe(4);})问题:此处更新后的计数返回 1(默认为useState),我预计为 4。expect(parseInt(input.value, 10)).toBe(4)通过并onChange连接输入。问题:为什么没有使用更新的输入值?附加信息:虽然我不确定,但我认为它可能没有更新useStateon change,所以我还添加了一个键盘事件来在我更改它的值后点击输入上的 enter 键。我希望进一步模拟用户并更新状态,但我没有运气。非常感谢任何帮助!对于任何不合适的地方,我深表歉意,最近几天我一直在看 Jest/RTL。
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您的类型属性中有错字。改变这个

<input type="texts" {...} />

对此

<input type="text" {...} />

并且测试将再次起作用。我的猜测是,通过指定一个<input>无效的type属性,库不知道你是哪个角色input,所以它不能onchange正确处理事件。

我不确定为什么更新到react-scriptsand的新版本@testing-library/react会解决问题,即使您将拼写错误留在那里也是如此。


查看完整回答
反对 回复 2023-05-18
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信