Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在React中测试DOM更新_Javascript_Reactjs_Testing - Fatal编程技术网

Javascript 在React中测试DOM更新

Javascript 在React中测试DOM更新,javascript,reactjs,testing,Javascript,Reactjs,Testing,在React组件中,我使用一个外部库来创建复杂组件,并在渲染时对其进行轻微修改。因此,在我自己的组件中,我使用元素查询和变异观察器之类的东西来获取DOM中的渲染元素,并根据DOM本身的状态(而不是外部组件,因为我无法访问其状态)动态添加我自己的修改 这很好,但我还没有弄清楚如何测试这个功能[开玩笑]。特别是,我添加了变异监听器,它根据外部组件呈现的HTML添加我自己的小组件,当鼠标悬停在动态创建的元素列表上时添加一个按钮。当我试图开玩笑地测试它时,没有执行任何逻辑,并且无法测试我添加的功能,因为

在React组件中,我使用一个外部库来创建复杂组件,并在渲染时对其进行轻微修改。因此,在我自己的组件中,我使用元素查询和变异观察器之类的东西来获取DOM中的渲染元素,并根据DOM本身的状态(而不是外部组件,因为我无法访问其状态)动态添加我自己的修改

这很好,但我还没有弄清楚如何测试这个功能[开玩笑]。特别是,我添加了变异监听器,它根据外部组件呈现的HTML添加我自己的小组件,当鼠标悬停在动态创建的元素列表上时添加一个按钮。当我试图开玩笑地测试它时,没有执行任何逻辑,并且无法测试我添加的功能,因为对DOM的更改不会出现,即使在完全渲染的情况下也是如此。特别是,在测试期间,我发现我在组件中使用的查询没有任何值,因为它们需要外部组件为我自己的组件完全呈现HTML以观察更改

我需要一种方法来测试我的组件,使外部组件能够呈现,但我自己的组件可以在其自身状态发生变化时执行更新


如果在测试过程中这些查询没有任何结果,我如何测试基于元素查询执行的更新的功能?

这就是这样一种黑客的问题:你在做事情的方式之外,所以像测试框架这样的东西往往会崩溃。我知道黑客可能是以您想要的方式使用此外部库的唯一方法,但在可维护性方面存在成本。我会问黑客是否真的是解决问题的唯一方法。例如,你能不能用叉子叉图书馆?是的,从所有实际的角度来看,叉图书馆将是一项相当大的任务。我将把它归结为一些只能通过完整的UI/E2E测试来实际测试的东西。