本文介绍了Jest 测试 - TypeError:document.createRange 不是函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的测试

import VueI18n from 'vue-i18n'
import Vuex from "vuex"
import iView from 'view-design'
import {mount,createLocalVue} from '@vue/test-utils'
// @ts-ignore
import FormAccountName from '@/views/forms/FormAccountName/FormAccountName'
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(iView)
localVue.use(VueI18n)
describe('a',()=>{
    test('b',async ()=>{
        const wrapper = mount(FormAccountName,{
            localVue,
            mocks: {
                $t: () => 'this is a label',
                formItems: {
                    name: '<a>'
                }
            },
        })
        expect(wrapper).toMatchSnapshot()
    })
})

错误

快照正常生成,但是报错

The snapshot was generated normally, but an error was obtained

[Vue 警告]:nextTick 中的错误:TypeError:document.createRange 不是函数"

[Vue warn]: Error in nextTick: "TypeError: document.createRange is not a function"

found in

---> <Tooltip>
       <ErrorTooltipTs>
         <ValidationProvider>
           <FormRow>
             <ValidationObserver>
               <FormWrapper>
                 <FormAccountNameUpdateTs>
                   <Root>

作为 iView 标签,但我已经初始化它.所以我不知道出了什么问题.有人可以帮我吗?

as iView tag ,but i had initialize it.so i don't know what went wrong. could someone help me?

推荐答案

在 pollyfill.js 或 testSetup 中添加下面的配置模拟代码

Add below config mock code in pollyfill.js or testSetup

global.document.createRange = () => ({
        setStart: () => {},
        setEnd: () => {},
        commonAncestorContainer: {
            nodeName: 'BODY',
            ownerDocument: document
        },
        createContextualFragment: jest.fn
    });

这篇关于Jest 测试 - TypeError:document.createRange 不是函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-13 04:31