Шутка импортируйте распространенные плагины, такие как Vee, Проверяйте перед каждым тестом

#vue.js #unit-testing #jestjs

Вопрос:

Я новичок в Jest и тестирую свое приложение Nuxt JS с помощью модульного тестирования. У меня настроено много тестовых файлов, и мне нужно импортировать различную логику в каждый тестовый файл, например, мою конфигурацию проверки Vee.

Я попытался добавить его в setup.js файл и включить это, setupFilesAfterEnv но он не включается.

Что я делаю не так?

tests/unit/setup.js

 import Vue from 'vue' import { ValidationProvider, ValidationObserver, extend, configure, localize } from 'vee-validate' import * as rules from 'vee-validate/dist/rules'; import en from 'vee-validate/dist/locale/en.json'  const config = {  mode: 'lazy',  classes: {  valid: '',  invalid: 'tw-border-red-500 dark:tw-border-white'  } }  Object.keys(rules).forEach(rule =gt; {  extend(rule, rules[rule]); });  configure(config)  // Register it globally Vue.component('ValidationObserver', ValidationObserver) Vue.component('ValidationProvider', ValidationProvider)  // // activate the locales localize({  en });  

Мое jest.config.js досье:

 module.exports = {  silent: true,  testEnvironment: 'jsdom',  moduleNameMapper: {  '^@/(.*)

И один из моих тестовых файлов называется LoanAmount  :

 import { mount } from '@vue/test-utils' import flushPromises from 'flush-promises'; import LoanAmount from '@/components/Form/Steps/Loan/LoanAmount'  describe('LoanAmount', () =gt; {  test('is a Vue instance', () =gt; {  const wrapper = mount(LoanAmount)  expect(wrapper.vm).toBeTruthy()  })   test('amount is available for value', async () =gt; {  const wrapper = mount(LoanAmount)  await flushPromises()   const amount = wrapper.findAll('.jest__amount-input')  expect(amount.exists()).toBe(true)  }) })  

Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :

 module.exports = {  rootDir: path.resolve(__dirname, '../../'),  moduleFileExtensions: [  'js',  'json',  'vue'  ],  transform: {  '^. \.js



: 'lt;rootDirgt;/$1', '^~/(.*)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'lt;rootDirgt;/$1', '^vueИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'vue/dist/vue.common.js', }, moduleFileExtensions: ['js', 'vue', 'json'], transform: { '^. \.jsИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'babel-jest', '.*\.(vue)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'vue-jest', 'vee-validate/dist/rules': 'babel-jest' }, collectCoverage: true, collectCoverageFrom: [ 'lt;rootDirgt;/components/**/*.vue', 'lt;rootDirgt;/pages/**/*.vue', ], transformIgnorePatterns: [ 'lt;rootDirgt;/node_modules/(?!vee-validate/dist/rules)', ], setupFilesAfterEnv: [ 'lt;rootDirgt;/tests/unit/setup.js' ] } И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'babel-jest', '.*\.(vue)

: 'lt;rootDirgt;/$1', '^~/(.*)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'lt;rootDirgt;/$1', '^vueИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'vue/dist/vue.common.js', }, moduleFileExtensions: ['js', 'vue', 'json'], transform: { '^. \.jsИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'babel-jest', '.*\.(vue)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: 'vue-jest', 'vee-validate/dist/rules': 'babel-jest' }, collectCoverage: true, collectCoverageFrom: [ 'lt;rootDirgt;/components/**/*.vue', 'lt;rootDirgt;/pages/**/*.vue', ], transformIgnorePatterns: [ 'lt;rootDirgt;/node_modules/(?!vee-validate/dist/rules)', ], setupFilesAfterEnv: [ 'lt;rootDirgt;/tests/unit/setup.js' ] } И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘vue-jest’, ‘. \.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)

: ‘lt;rootDirgt;/$1’, ‘^~/(.*)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘lt;rootDirgt;/$1’, ‘^vueИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘vue/dist/vue.common.js’, }, moduleFileExtensions: [‘js’, ‘vue’, ‘json’], transform: { ‘^. \.jsИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘babel-jest’, ‘.*\.(vue)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘vue-jest’, ‘vee-validate/dist/rules’: ‘babel-jest’ }, collectCoverage: true, collectCoverageFrom: [ ‘lt;rootDirgt;/components/**/*.vue’, ‘lt;rootDirgt;/pages/**/*.vue’, ], transformIgnorePatterns: [ ‘lt;rootDirgt;/node_modules/(?!vee-validate/dist/rules)’, ], setupFilesAfterEnv: [ ‘lt;rootDirgt;/tests/unit/setup.js’ ] }И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘jest-transform-stub’, ‘vee-validate/dist/rules’: ‘babel-jest’ }, transformIgnorePatterns: [ ‘lt;rootDirgt;/node_modules/(?!(vuetify)|(vue-material-design-icons)|(vee-validate/dist/rules)|(vue-picture-input/PictureInput.vue))’ ], setupFiles: [ ‘./tests/unit/jest.setup.js’ ], reporters: [‘default’, ‘jest-junit’], collectCoverageFrom: [ ‘src/**/*.{js,vue}’, ‘!src/**/Application/*.js’ ], testPathIgnorePatterns: [ ‘lt;rootDirgt;/node_modules/’, ‘lt;rootDirgt;/vendor/’, ‘lt;rootDirgt;/web/’ ], coverageThreshold: { global: { branches: process.env.COVERAGE_THRESHOLD_GLOBAL_BRANCH || 37, functions: process.env.COVERAGE_THRESHOLD_GLOBAL_FUNCTIONS || 40, lines: process.env.COVERAGE_THRESHOLD_GLOBAL_LINES || 50 } } }

: ‘lt;rootDirgt;/$1’, ‘^~/(.*)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘lt;rootDirgt;/$1’, ‘^vueИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘vue/dist/vue.common.js’, }, moduleFileExtensions: [‘js’, ‘vue’, ‘json’], transform: { ‘^. \.jsИ один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘babel-jest’, ‘.*\.(vue)И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :


: ‘vue-jest’, ‘vee-validate/dist/rules’: ‘babel-jest’ }, collectCoverage: true, collectCoverageFrom: [ ‘lt;rootDirgt;/components/**/*.vue’, ‘lt;rootDirgt;/pages/**/*.vue’, ], transformIgnorePatterns: [ ‘lt;rootDirgt;/node_modules/(?!vee-validate/dist/rules)’, ], setupFilesAfterEnv: [ ‘lt;rootDirgt;/tests/unit/setup.js’ ] }И один из моих тестовых файлов называется LoanAmount :


Если я включу все содержимое из tests/unit/setup.js своего блока и включу его выше describe , то это сработает, но я не могу повторять это в каждом тестовом файле.

Ответ №1:

Вы можете использовать setupFiles недвижимость в jest.config.js :