0

I am currently experienced the following error when running my unit tests:

ReferenceError: Vue is not defined

> 10 | import hljsVuePlugin from '@highlightjs/vue-plugin';
     | ^

Here is my component code:

<template>
  <div>
    <highlightjs autodetect :code="'hello world'" />
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import hljsVuePlugin from '@highlightjs/vue-plugin';

export default defineComponent({
  components: {
    highlightjs: hljsVuePlugin.component,
  },
});
</script>

in my test file, I'm simply trying to mount this component:

const wrapper = mount(FooBlah, {
  global: {
    stubs: {
      highlightjs: {
        template: '<div />',
      },
    },
  },
});

Here are my libraries versions:

"vue": "^3.2.33",
"@highlightjs/vue-plugin": "^2.1.2",
"highlight.js": "^11.6.0",
"@vue/cli-plugin-unit-jest": "~5.0.4",
"@vue/test-utils": "^2.0.2",
"@vue/vue3-jest": "^27.0.0",

Is there any way I could tell him to simply ignore the highlightjs the component in the jest.config ?

Scipion
  • 11,449
  • 19
  • 74
  • 139

1 Answers1

1

As mentionned in the comments, this fixed my issue:

jest.mock('@highlightjs/vue-plugin', () => ({
  hljsVuePlugin: {
    component: jest.fn(),
  },
}));
const wrapper = mount(FooBlah, {
  global: {
    stubs: {
      highlightjs: {
        template: '<div />',
      },
    },
  },
})

You can find more information here: How can I mock an ES6 module import using Jest?

Scipion
  • 11,449
  • 19
  • 74
  • 139