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;
});
这取决于您使用的测试框架。例如,如果您使用
jest
,则不需要。
这里是对此建议的参考https://kentcdodds.com/blog/common-mistakes-with-react-testing-library#using-cleanup
很长一段时间以来,清理工作都是自动进行的(大多数主要测试框架都支持),您不再需要担心它