\n我正在学习 React 测试,但 fireEvent 不会改变我输入的值。无奈,不知道为什么?
\n我正在渲染 BuyPlace 组件。在这个组件中,我有一个包含输入组件的表单(这些组件只是带有输入的标签,我将道具传递给表单上的这个组件)。
\n在 screen.debug() 上,我可以看到我的组件是使用此表单和所有这些输入正确呈现的。
\n另外,我的输入在我的测试中被正确捕获,我检查了这一点。
\n这是我的测试:
\ntest("should change input value", async () => {\nrender(\n<HashRouter>\n<UserContext.Provider value={{ user: true }}>\n<BuyPlace />\n</UserContext.Provider>\n</HashRouter>\n);\nconst nameInputEl = screen.getByPlaceholderText("Podaj w\xc5\x82asn\xc4\x85 nazw\xc4\x99");\nfireEvent.change(nameInputEl, {\ntarget: { value: "Micha\xc5\x82" },\n});\nawait waitFor(() => {\nexpect(nameInputEl.value).toBe("Micha\xc5\x82");\n});\n});\nRun Code Online (Sandbox Code Playgroud)\n测试未通过。当然,我的应用程序运行正常,但在测试中它不起作用。
\n这是我的组件上的handleInputChange:
\nconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement> | React.ChangeEvent<HTMLTextAreaElement>) => {\nsetInputValues((prevValues) => {\nreturn {\n...prevValues,\n[e.target.name]: e.target.value,\n}\n});\n};\nRun Code Online (Sandbox Code Playgroud)\n我发现的每个解决方案都不起作用...我的输入值始终是空字符串。有人可以帮我弄这个吗?我想学习编写好的测试,但我不知道问题出在哪里。
\n编辑\n我在 screen.debug() 上看到了一些有趣的东西。
\n我在测试中的输入在没有 onchange 属性的情况下呈现,这在测试中正常吗?看一下这个:
\n <input\n id="name"\n name="name"\n placeholder="Podaj w\xc5\x82asn\xc4\x85 nazw\xc4\x99"\n type="text"\n …Run Code Online (Sandbox Code Playgroud)