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

sxissh06  于 2023-04-03  发布在  Jest
关注(0)|答案(1)|浏览(186)

第一次提问:)
我有一个React应用程序:

// index.js

ReactDOM.render(
  <React.StrictMode>
    <Router>
      <App />
    </Router>
  </React.StrictMode>,
  document.getElementById('root'),
);

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

act(() => {
  render(
    <Router>
      <SomeComponentIWantToTest />
    </Router>
  );
});

我突然想到,将测试 Package 在StrictMode中会更合适,以更接近应用程序的实际呈现方式:

act(() => {
  render(
    <React.StrictMode>
      <Router>
        <SomeComponentIWantToTest />
      </Router>
    </React.StrictMode>
  );
});

在尝试了这个之后,我注意到:
1.一个好的方面是,它抛出了一些控制台警告,我没有在act中 Package 一些测试代码。我能够修复这些地方。万岁!
1.我的测试速度明显变慢了。我猜这是因为My React Component is rendering twice because of Strict Mode
另外,快速浏览一下docs,似乎StrictMode是一个只用于开发的东西,那么,在React.StrictMode中 Package 测试(理论上与生产中将要发生的事情有关)有意义吗?

bnlyeluc

bnlyeluc1#

不,我不这么认为。您应该测试您的生产系统行为。
参考:https://react.dev/reference/react/StrictMode
严格模式仅用于开发:
所有这些检查仅用于开发,不影响生产构建。
测试开发唯一的东西有什么意义?
严格模式会做双重渲染和重新运行的效果。你肯定不希望你的生产系统表现得像那样。因此不要为它写测试用例,因为这种行为不是预期的。这只是为了开发时间。
顺便说一下,官方的react-test-renderer不支持严格模式。这可能意味着,“官方”没有必要测试它。

相关问题