添加测试用例以测试两次安装组件的 React 18 严格模式行为

问题描述 投票:0回答:1

React 18 严格模式下,Component 先挂载,卸载再重新挂载。我想在我的 React 应用程序中添加一个测试用例来测试这种行为。

我在我的应用程序中使用 karma 和 jasmine 框架。目前没找到怎么挂载。所以使用

ReactDOM.render()

    act(() => {
        ReactDOM.render(
            <Component />, container);
    });

    // Act
    act(() => {
        ReactDOM.unmountComponentAtNode(container);
    });

    act(() => {
        ReactDOM.render(
            <Component />, container);
    });

问题是,虽然它进入安装的挂钩内,但在重新安装时卸载并再次安装。但是随着

render
它再次运行并说我们有变量
private a = '';
我们在已安装的钩子中设置一些值,而不是在未安装的钩子中进行清洁。

我的预期输出是当它重新安装时变量不应设置为初始值,因为我们没有清理它。但目前使用

render
它设置为空。

所以我缺少什么来获得我想要的输出

reactjs karma-jasmine react-18 react-testing
1个回答
0
投票

没有找到任何有用的东西,所以改变了我的方法,解决方法之一是从测试文件中调用生命周期挂钩。

const component = new Component({ prop1: {' '}});
component.componentWillUnmount();
component.componentDidMount();

虽然手动调用生命周期挂钩看起来不太好,但这个变通办法得到了我想要的输出。

如果有人知道另一种方法,请更新回复。

© www.soinside.com 2019 - 2024. All rights reserved.