* docs: (ru) config/README.md update devServer example * docs: (ru) creating-a-project.md update * docs: css.md add less examples * docs: browser-compatibility.md update * docs: deployment.md update * docs: (ru) config/readme.md update * docs: (ru) deployment.md update * docs: (ru) prototyping.md add yarn command * docs: config.md fix * docs: ui-localization.md typo * docs: [RU] Translation update * docs: [RU] Translation update * docs: vuex.md added * docs: router.md added * docs: migration from v3 added * docs: config.js updated * docs: config/readme.md updated * docs: unit-mocha.md updated * docs: css.md updated * docs: cli-service.md updated * docs: generator-api.md updated * docs: build-target.md update * docs: deployment.md update * docs: e2e-nightwatch.md update * docs: unit-jest.md update * docs: e2e-nightwatch.md update * docs: migrating-from-v3.md update * docs: plugin-dev.md update * docs: plugin-dev.md update * docs: plugin-dev.md update * docs: plugin-dev.md update
3.6 KiB
@vue/cli-plugin-unit-jest
Плагин unit-jest для vue-cli
Внедряемые команды
-
vue-cli-service test:unitЗапуск модульных тестов с помощью Jest. По умолчанию значением
testMatchбудет<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))что совпадает с:- Любыми файлами в
tests/unitкоторые заканчиваются на.spec.(js|jsx|ts|tsx); - Любыми js(x)/ts(x) файлами внутри каталогов
__tests__.
Использование:
vue-cli-service test:unit [options] <regexForTestFiles>Также поддерживаются все опции Jest CLI.
- Любыми файлами в
Отладка тестов
Обратите внимание, что запуск jest напрямую будет заканчиваться ошибкой, потому что для пресета Babel требуются подсказки как заставить код работать в Node.js. Поэтому необходимо запускать тесты командой vue-cli-service test:unit.
Если необходимо отладить тесты с помощью инспектора Node, можно запустить следующее:
# macOS или linux
node --inspect-brk ./node_modules/.bin/vue-cli-service test:unit
# Windows
node --inspect-brk ./node_modules/@vue/cli-service/bin/vue-cli-service.js test:unit
Конфигурация
Jest можно настроить через jest.config.js в корне проекта, или через поле jest в файле package.json.
Установка в уже созданный проект
vue add unit-jest
Обработка зависимостей из /node_modules
По умолчанию jest не обрабатывает ничего из /node_modules.
Поскольку jest работает на Node, то нет необходимости транспилировать всё, где используются современные возможности ECMAScript, так как Node >=8 уже их поддерживает, поэтому это разумное решение по умолчанию. По этой же причине также cli-plugin-jest не поддерживает опцию transpileDependencies в файле vue.config.js.
Однако, есть (по крайней мере) три случая, когда необходимо транспилировать код из /node_modules в jest:
- Использование выражений ES6
import/export, которые нужно скомпилировать в формат commonjsmodule.exports - Однофайловые компоненты (
.vueфайлы) которые запускаются черезvue-jest - Код Typescript
Для этого необходимо добавить исключение в опции jest transformIgnorePatterns. Значение по умолчанию такое:
transformIgnorePatterns: ['/node_modules/']
Необходимо добавить исключения из этого шаблона с негативным lookahead в RegExp:
transformIgnorePatterns: ['/node_modules/(?!name-of-lib-o-transform)']
Для исключения нескольких библиотек:
transformIgnorePatterns: ['/node_modules/(?!lib-to-transform|other-lib)']