自定义组件单元测试时如何正确模拟 DOM 结构?
我写了一个简单的自定义按钮组件,想用 Jest + Testing Library 做单元测试,但每次渲染都报错说找不到对应的 DOM 节点。我明明在测试里用了 render 啊,是不是我的组件结构有问题?
这是我的组件代码:
<template>
<button class="my-btn" @click="handleClick">
<slot></slot>
</button>
</template>
<script>
export default {
methods: {
handleClick() { /* do something */ }
}
}
</script>
测试时直接 render(MyButton) 就挂了,控制台提示“TypeError: Cannot read property ‘addEventListener’ of null”,这到底该怎么测?
如果想用 Testing Library 的风格,就用 @testing-library/vue,底层会自动处理 DOM 环境。
另外确保 jest.config.js 里配置了 testEnvironment: 'jsdom',没配置的话 DOM 是 null。