Jest Test - TypeError : document.createRange is not a function

1.1k Views Asked by At

my test

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()
    })
})

error

The snapshot was generated normally, but an error was obtained

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

found in

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

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

2

There are 2 best solutions below

0
Karma On
document.createRange = () => ({
    setStart: () => {},
    setEnd: () => {},
    //@ts-ignore
    commonAncestorContainer: {
      nodeName: "BODY",
      ownerDocument: document,
    },
  })
0
MANISH KUMAR On

Add below config mock code in pollyfill.js or testSetup

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