# @vue/cli-plugin-unit-jest
unit-jest plugin for vue-cli
# Injected Commands
vue-cli-service test:unitRun unit tests with Jest. Default
testMatchis<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))which matches:- Any files in
tests/unitthat end in.spec.(js|jsx|ts|tsx); - Any js(x)/ts(x) files inside
__tests__directories.
Usage:
vue-cli-service test:unit [options] <regexForTestFiles>All Jest command line options are also supported.
- Any files in
# Debugging Tests
Note that directly running jest will fail because the Babel preset requires hints to make your code work in Node.js, so you must run your tests with vue-cli-service test:unit.
If you want to debug your tests via the Node inspector, you can run the following:
# macOS or linux
node --inspect-brk ./node_modules/.bin/vue-cli-service test:unit --runInBand
# Windows
node --inspect-brk ./node_modules/@vue/cli-service/bin/vue-cli-service.js test:unit --runInBand
# Configuration
Jest can be configured via jest.config.js in your project root, or the jest field in package.json.
# Installing in an Already Created Project
vue add unit-jest
# Transform dependencies from /node_modules
By default, jest doesn't transform anything from /node_modules.
Since jest runs in node, we also don't have to transpile anything that uses modern ECMAScript features as Node >=8 already supports these features, so it's a sensible default. cli-plugin-jest also doesn't respect the transpileDependencies option in vue.config.js for the same reason.
However, we have (at least) three cases where we do need to transpile code from /node_modules in jest:
- Usage of ES6
import/exportstatements, which have to be compiled to commonjsmodule.exports - Single File Components (
.vuefiles) which have to be run throughvue-jest - Typescript code
To do this, we need to add an exception to the transformIgnorePatterns option of jest. This is its default value:
transformIgnorePatterns: ['/node_modules/']
We have to add exceptions to this pattern with a RegExp negative lookahead:
transformIgnorePatterns: ['/node_modules/(?!name-of-lib-o-transform)']
To exclude multiple libraries:
transformIgnorePatterns: ['/node_modules/(?!lib-to-transform|other-lib)']