react测试库中每个测试用例后是否需要调用unmount?

问题描述 投票:0回答:1
describe('<CustomTooltip />', () => {
  it('should show tooltip text', async () => {
    const { container, unmount } = render(<CustomTooltip text='Tooltip Text' />)

    userEvent.hover(container.querySelector('svg'))
    await screen.findByText('Tooltip Text')

    screen.debug()
    unmount()  // ?? is it necessary to call unmount after each test cases?
  })

  it('check if there is an mounted component', () => {
    screen.debug()
  })
})

是否需要在每个测试用例之后调用

unmount
?因为我在
CustomTooltip
组件中添加了 useEffect,并且 Unmounted 在第二个测试用例之前被记录。甚至第二个测试用例
screen.debug
输出也是
<body />

  useEffect(() => {
    console.log('Mounted')
    return () => console.log('Unmounted')
  }, [])

我问这个问题是因为我在每个测试用例之后看到测试实用程序中

render
unmount
组件的自定义实现,我很想知道这是否真的很重要。

let lastMount = null;
const _render = (...args) => {
  lastMount = render(...args);
  return lastMount;
};

afterEach(() => {
  if (lastMount)
    lastMount.unmount();

  lastMount = null;
});
reactjs react-testing-library
1个回答
2
投票

这取决于您使用的测试框架。例如,如果您使用

jest
,则不需要。

这里是对此建议的参考https://kentcdodds.com/blog/common-mistakes-with-react-testing-library#using-cleanup

很长一段时间以来,清理工作都是自动进行的(大多数主要测试框架都支持),您不再需要担心它

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