首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试时如何触发功能组件卸载?

测试时如何触发功能组件卸载?
EN

Stack Overflow用户
提问于 2021-05-04 19:44:10
回答 1查看 1K关注 0票数 0

我在功能组件中使用了"useEffect“来实现"componentWillUnmount”的功能。如何在使用Jest/Enzyme测试组件时触发它?

我的组件:

代码语言:javascript
运行
复制
const myComp = () => {
  useEffect(() => () => {
    console.log('Unmounted');
  }, []);
  return <div>Test</div>;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-08 10:03:11

根据这个issue,我们知道shallow render不支持useEffect钩子。我们需要手动使用mount并调用.unmount()方法。

例如。

index.tsx

代码语言:javascript
运行
复制
import React, { useEffect } from 'react';

export const MyComp = () => {
  useEffect(
    () => () => {
      console.log('Unmounted');
    },
    []
  );
  return <div>Test</div>;
};

index.test.tsx

代码语言:javascript
运行
复制
import React from 'react';
import { mount } from 'enzyme';
import { MyComp } from './';

describe('67384129', () => {
  it('should pass', () => {
    const wrapper = mount(<MyComp />);
    wrapper.unmount();
  });
});

测试结果:

代码语言:javascript
运行
复制
 PASS  examples/67384129/index.test.tsx (8.233 s)
  67384129
    ✓ should pass (53 ms)

  console.log
    Unmounted

      at examples/67384129/index.tsx:6:15

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        9.121 s

包版本:

代码语言:javascript
运行
复制
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.5",
"react": "^16.14.0"
"jest": "^26.6.3",
"jest-environment-enzyme": "^7.1.2",
"jest-enzyme": "^7.1.2",
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67384129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档