I’ve finally cracked it after learning from different configurations in testing 0.15.x with jest
npm install babel-jest jest-vue vue-template-compiler -D
/src/tests/example.test.js
import Quasar, * as All from 'quasar'
import { shallow, createLocalVue } from '@vue/test-utils'
import { IsEmpty } from 'ipayroll-js/src/utils'
import Component from '@/pages/login.vue'
const localVue = createLocalVue()
localVue.use(Quasar, {components: All, directives: All, plugins: All})
const wrapper = shallow(Component, {
localVue,
mocks: {
$isEmpty: IsEmpty
}
})
it('Component Page test:', () => {
expect(wrapper.isVueInstance()).toBe(true)
})
package.json
...
"jest": {
"testMatch": [
"<rootDir>/src/**/?(*.)(spec).js?(x)"
],
"testPathIgnorePatterns": [
"<rootDir>/src/e2e/"
],
"moduleNameMapper": {
"^@/(.*)$": "<rootDir>/src/$1"
},
"moduleFileExtensions": [
"js",
"vue"
],
"collectCoverageFrom": [
"**/*.{vue}"
],
"transformIgnorePatterns": [
"node_modules/core-js",
"node_modules/babel-runtime",
"node_modules/lodash",
"node_modules/vue"
],
"coverageDirectory": "<rootDir>/src/components/coverage",
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/jest-vue"
},
"mapCoverage": true
}
...
.babelrc
{
"presets": [
[ "env", {"modules": false} ],
"stage-2"
],
"env": {
"test": {
"presets": [
["env", { "targets": { "node": "current" }}]
],
"plugins": [
[
"module-resolver",
{
"root": [
"./src"
],
"alias": {
"quasar": "quasar-framework/dist/quasar.mat.esm.js",
"^vue$": "vue/dist/vue.common.js"
}
}
]
]
}
},
"plugins": ["transform-runtime"],
"comments": false
}