Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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
Jestjs 如何在每次jest测试之前/之后重置状态?_Jestjs - Fatal编程技术网

Jestjs 如何在每次jest测试之前/之后重置状态?

Jestjs 如何在每次jest测试之前/之后重置状态?,jestjs,Jestjs,我的组件都需要由状态提供程序包装才能正常工作,所以当我呈现每个组件进行测试时,我会将它们包装在状态提供程序中。像这样: <StateProvider> <ThemeProvider theme={theme}> <Component_Being_Tested /> </ThemeProvider> </StateProvider> 但是它失败了,因为useContext是一个React钩子,只能在函数组件中调用 还有什

我的组件都需要由状态提供程序包装才能正常工作,所以当我呈现每个组件进行测试时,我会将它们包装在状态提供程序中。像这样:

<StateProvider>
  <ThemeProvider theme={theme}>
    <Component_Being_Tested />
  </ThemeProvider>
</StateProvider>
但是它失败了,因为useContext是一个React钩子,只能在函数组件中调用

还有什么方法可以在每次测试之前/之后重置状态?

如果要使用,可以在每次(清理)之后使用


除此之外,我还将更改您的组件体系结构。把它分成两部分。这样,您就可以通过在测试中控制显示(表示)组件的状态来显式测试该组件。您可以使用功能测试和/或E2E测试来测试容器组件。这是一个很好的例子。

我实际上在使用react测试库,但它并没有清理状态。我已经将组件拆分为容器(用于处理逻辑)和布局(用于处理表示),但我的容器需要运行一些函数,并首先将结果传递到布局中。@GCM每个测试是否使用新的呈现?这也可能导致状态无法重置。是的,为每个测试重新渲染。我已经将组件包装在自定义渲染()中,但即使我删除自定义渲染并将提供程序直接添加到测试渲染中,我仍然存在相同的问题。嘿,这里@Jake,你最终解决了这个问题吗?如何?//导入此项以清除测试之间的DOM至关重要,否则测试将失败<代码>导入“反应测试库/每次后清理”注意,这存在于较新版本的反应测试库中。我使用的是^6.0.0版,这是必需的。
beforeEach(() => useContext(Store).dispatch(resetState()));