ReferenceError:ShadowRoot 未定义 Jest 和 Vue3

问题描述

我正在使用 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 可以解决问题。也许最新版本有问题,应该提出一个错误。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...