material ui对话框导致react hook表单更改isValid值,导致RTL动作错误



我正在尝试用react测试库测试一个对话框。此对话框包含一个我用react hook表单呈现的表单。此表单有一个带有验证的字段。当组件呈现时,isValid会从false再次翻转为true。这会导致react测试库检测到更改并抱怨act时出现问题。

我创建了一个小沙盒来演示我的问题:https://codesandbox.io/s/intelligent-chaum-pmgozq?file=/src/App.tsx

在控制台中查看isValid如何从false变为true再变为false。

现在,取下包装Dialog,观察它按预期工作,粘贴在false。

然而,它似乎是Dialog和react钩子的组合,形成了isValid的代理。如果我删除了对isValid的所有引用,那么表单只呈现一次。

我不确定如何绕过这个问题,也不确定正确的方法是什么。我想测试整个对话框,就像KCD一直说的那样,测试尽可能接近用户体验,所以我认为提取表单并测试这不是一个好主意。同时,我甚至不知道如何利用waitFor来解决这个问题。

我认为在这种情况下,编写代码的另一种方法会有所帮助。

我已经在一个名为MyForm的新组件中提取了您的form和与react-hook-form相关的所有逻辑,然后在Dialog组件中呈现了MyForm

现在我只能在控制台中看到1个log

以下是更改后的代码沙盒的链接:https://codesandbox.io/s/magical-frog-cjpi3h?file=/src/App.tsx

最新更新