小编Wil*_*low的帖子

我应该在我的测试套件中使用 React.StrictMode 吗?

第一次发帖提问:)

我有一个React应用程序:

// index.js

ReactDOM.render(
  <React.StrictMode>
    <Router>
      <App />
    </Router>
  </React.StrictMode>,
  document.getElementById('root'),
);
Run Code Online (Sandbox Code Playgroud)

我有 24 个jest测试套件,到目前为止,基本上是这样的:

act(() => {
  render(
    <Router>
      <SomeComponentIWantToTest />
    </Router>
  );
});
Run Code Online (Sandbox Code Playgroud)

我想到将测试包装在 中更合适StrictMode,以更接近应用程序的实际渲染方式:

act(() => {
  render(
    <React.StrictMode>
      <Router>
        <SomeComponentIWantToTest />
      </Router>
    </React.StrictMode>
  );
});
Run Code Online (Sandbox Code Playgroud)

尝试之后,我注意到以下几点:

  1. 一件好事是,它在我没有将一些测试代码包装在act. 我能够修复这些地方。欢呼!
  2. 我的测试速度显着减慢。我猜这是因为我的 React 组件由于 Strict Mode 而渲染了两次

另外,快速浏览一下文档这似乎StrictMode只是开发的事情。那么,将测试(理论上与生产中将发生的情况有关)包装起来有意义吗React.StrictMode

javascript unit-testing reactjs jestjs react-strictmode

8
推荐指数
1
解决办法
1692
查看次数