问题描述
我正在使用 Jest 设置 Vue3 和单元测试。
我已经不得不努力让它工作,而且我已经尝试了很多不同的配置。
这是我最后一个“工作”配置,因此我收到此错误:
ReferenceError: ShadowRoot is not defined
其实我已经没有更多的想法了。
我的配置:
jest.config.js
module.exports = {
transform: {
"^.+\\.vue$": "vue-jest","^.+\\.js$": "babel-jest",'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)(\\?inline)?$': 'jest-transform-stub',},moduleFileExtensions: ['vue','js','json','node'],transformIgnorePatterns: [
"node_modules/(?!@jamescoyle/vue-icon)"
],moduleNameMapper: {
"@/(.*)$": "<rootDir>/src/$1"
}
}
header.test.js
import { mount } from '@vue/test-utils'
import Header from "./Header.vue";
test('Header',() => {
const wrapper = mount(Header)
console.log(wrapper.html())
})
完整的错误:
> vue-cli-service test:unit
FAIL src/views/components/layout/Header/Header.test.js
✕ Header (11ms)
● Header
ReferenceError: ShadowRoot is not defined
3 |
4 | test('Header',() => {
> 5 | const wrapper = mount(Header)
| ^
6 |
7 | console.log(wrapper.html())
8 | })
at normalizeContainer (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1260:30)
at Object.app.mount (node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js:1211:27)
at mount (node_modules/@vue/test-utils/dist/vue-test-utils.cjs.js:2288:18)
at Object.<anonymous> (src/views/components/layout/Header/Header.test.js:5:21)
Test Suites: 1 failed,1 total
Tests: 1 failed,1 total
Snapshots: 0 total
Time: 1.664s
Ran all test suites.
解决方法
看起来 Vue 团队已经意识到这一点,并且已经合并了代码修复。
参考资料
https://github.com/vuejs/vue-test-utils-next/issues/293
https://github.com/vuejs/vue-next/pull/2943
Vue 3.0.6 发布后应该可以解决这个问题。
,看起来将 Vue
版本降级为 3.0.2
并将 vue-test-utils
版本降级为 2.0.0-beta.10
可以解决问题。也许最新版本有问题,应该提出一个错误。