1 | # @vue/cli-plugin-unit-jest
|
2 |
|
3 | > unit-jest plugin for vue-cli
|
4 |
|
5 | ## Injected Commands
|
6 |
|
7 | - **`vue-cli-service test:unit`**
|
8 |
|
9 | Run unit tests with Jest. Default `testMatch` is `<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))` which matches:
|
10 |
|
11 | - Any files in `tests/unit` that end in `.spec.(js|jsx|ts|tsx)`;
|
12 | - Any js(x)/ts(x) files inside `__tests__` directories.
|
13 |
|
14 | Usage: `vue-cli-service test:unit [options] <regexForTestFiles>`
|
15 |
|
16 | All [Jest command line options](https://facebook.github.io/jest/docs/en/cli.html) are also supported.
|
17 |
|
18 | ## Debugging Tests
|
19 |
|
20 | 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`.
|
21 |
|
22 | If you want to debug your tests via the Node inspector, you can run the following:
|
23 |
|
24 | ```bash
|
25 | # macOS or linux
|
26 | node --inspect-brk ./node_modules/.bin/vue-cli-service test:unit --runInBand
|
27 |
|
28 | # Windows
|
29 | node --inspect-brk ./node_modules/@vue/cli-service/bin/vue-cli-service.js test:unit --runInBand
|
30 | ```
|
31 |
|
32 | ## Configuration
|
33 |
|
34 | Jest can be configured via `jest.config.js` in your project root, or the `jest` field in `package.json`.
|
35 |
|
36 | ## Installing in an Already Created Project
|
37 |
|
38 | ```bash
|
39 | vue add unit-jest
|
40 | ```
|
41 |
|
42 | ## Transform dependencies from `/node_modules`
|
43 |
|
44 | By default, jest doesn't transform anything from `/node_modules`.
|
45 |
|
46 | 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.
|
47 |
|
48 | However, we have (at least) three cases where we do need to transpile code from `/node_modules` in jest:
|
49 |
|
50 | 1. Usage of ES6 `import`/`export` statements, which have to be compiled to commonjs `module.exports`
|
51 | 2. Single File Components (`.vue` files) which have to be run through `vue-jest`
|
52 | 3. Typescript code
|
53 |
|
54 | To do this, we need to add an exception to the `transformIgnorePatterns` option of jest. This is its default value:
|
55 |
|
56 | ```javascript
|
57 | transformIgnorePatterns: ['/node_modules/']
|
58 | ```
|
59 |
|
60 | We have to add exceptions to this pattern with a RegExp negative lookahead:
|
61 |
|
62 | ```javascript
|
63 | transformIgnorePatterns: ['/node_modules/(?!name-of-lib-o-transform)']
|
64 | ```
|
65 |
|
66 | To exclude multiple libraries:
|
67 |
|
68 | ```javascript
|
69 | transformIgnorePatterns: ['/node_modules/(?!lib-to-transform|other-lib)']
|
70 | ```
|