Интеграция Jest с Quasar довольно проста.Вам понадобятся два пакета, babel-jest
и jest
.
yarn add jest babel-jest -D
После добавления этих двух зависимостей создайте файл jest.config.js
в корне вашего проекта:вот где все настройки jest.
Вот как должен выглядеть файл jest.config.js;
module.exports = {
globals: {
__DEV__: true,
},
verbose: false, // false since we want to see console.logs inside tests
bail: false,
testURL: 'http://localhost/',
testEnvironment: 'jsdom',
testRegex: './__unit__/.*.js$',
rootDir: '.',
testPathIgnorePatterns: [
'<rootDir>/components/coverage/',
'<rootDir>/test/cypress/',
'<rootDir>/test/coverage/',
'<rootDir>/dist/',
'<rootDir>/node_modules/',
],
moduleFileExtensions: ['js', 'json', 'vue'],
moduleNameMapper: {
'^vue$': 'vue/dist/vue.common.js',
'quasar': 'quasar-framework/dist/umd/quasar.mat.umd.js',
},
resolver: null,
transformIgnorePatterns: [
'node_modules/core-js',
'node_modules/babel-runtime',
'node_modules/vue',
],
transform: {
'^.+\\.js$': '<rootDir>/node_modules/babel-jest',
'.*\\.(vue)$': '<rootDir>/node_modules/vue-jest',
}
}
Затем создайте папку в корневом каталоге вашего проекта с именем __unit__
Поместите файл с именем MyUnitTest.test.js
в папку __unit__
.Теперь Jest забирает файлы из этой папки.
Последним шагом будет запуск тестов, просто добавьте это к package.json
"unit": "yarn run jest --config jest.config.js"
Boom!- Теперь вы можете запустить yarn run unit
или yarn run unit --watch
, и оно должно работать.
Вот пример компонента Quasar и теста Jest.
import { createLocalVue, shallowMount } from '@vue/test-utils'
import Vuex from 'vuex'
import Quasar, * as All from 'quasar'
import CookieConsent from '@components/common/CookieConsent.vue'
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(Quasar, { components: All, directives: All, plugins: All })
describe('CookieConsent.vue', () => {
const wrapper = shallowMount(CookieConsent, {
localVue,
mocks: {
$t: () => {},
},
})
test('CookieConsent.vue mock should exist', () => {
expect(wrapper.exists()).toBe(true)
})
})
Надеюсь, вы нашли это полезным