第一次提问:)
我有一个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 测试(理论上与生产中将要发生的事情有关)有意义吗?
1条答案
按热度按时间bnlyeluc1#
不,我不这么认为。您应该测试您的生产系统行为。
参考:https://react.dev/reference/react/StrictMode
严格模式仅用于开发:
所有这些检查仅用于开发,不影响生产构建。
测试开发唯一的东西有什么意义?
严格模式会做双重渲染和重新运行的效果。你肯定不希望你的生产系统表现得像那样。因此不要为它写测试用例,因为这种行为不是预期的。这只是为了开发时间。
顺便说一下,官方的react-test-renderer不支持严格模式。这可能意味着,“官方”没有必要测试它。