Javascript userEvent.type仅在包装为act时输入最后一个字符
我在用户事件github中发现了一个问题,它说它在版本12.0.1中得到了解决,但我使用的是版本12.1.5,我不断收到错误Javascript userEvent.type仅在包装为act时输入最后一个字符,javascript,reactjs,jestjs,react-testing-library,Javascript,Reactjs,Jestjs,React Testing Library,我在用户事件github中发现了一个问题,它说它在版本12.0.1中得到了解决,但我使用的是版本12.1.5,我不断收到错误 import React,{Fragment}来自“React”; 从“@testing library/react”导入{render,act}”; 从“@测试库/用户事件”导入userEvent; 从“/App”导入应用程序; test(“获取代码并在新路由中呈现它”,()=>{ 常量{getByLabelText}=render(); 行动(()=>{ 类型(get
import React,{Fragment}来自“React”;
从“@testing library/react”导入{render,act}”;
从“@测试库/用户事件”导入userEvent;
从“/App”导入应用程序;
test(“获取代码并在新路由中呈现它”,()=>{
常量{getByLabelText}=render();
行动(()=>{
类型(getByLabelText(“代码:”),“12345”);
});
expect(getByLabelText(“代码”).toHaveValue(“12345”);
});
您的问题可能在更改处理程序的实现中。我最近遇到了一个类似的问题,以下是我认为有效的方法,与真正有效的方法相比
如果你使用的是userEvent,我想你可以放弃这个动作。你能给我们看一下你的应用程序组件代码吗?我确实删除了userEvent,现在我的测试通过了,但我一直收到关于在act中包装用户事件的警告。我该怎么做才能阻止那个警告?关于发布我的应用程序代码堆栈溢出不允许我发布代码,因为它说我应该添加更多细节,减少代码。我现在正面临着完全相同的问题,你们是否都找到了@medicengonzo的解决方案?这个问题似乎也在这里讨论@Hylle刚刚发布了一个答案,如果你仍然有issueThanks@max,这可能会有所帮助。我会在某个时候尝试一下,尽管我最终用一个hacky
userEvent.type(“示例”,{delay:1})
● Gets a code and renders it in a new route
expect(element).toHaveValue(12345)
Expected the element to have value:
12345
Received:
5
function handleChange(ev: FormEvent, key = "") {
ev.preventDefault();
// ✅ Passes
const value = (ev.target as HTMLInputElement).value;
setState(s => {
// ❌ Fails (individual characters instead of progressively built up strings)
// const value = (ev.target as HTMLInputElement).value;
return { ...s, [key]: value };
});
}