The Vue CLI and test utils have a 'happy path' to setup testing libraries, but they are naturally geared to the latest version of Vue and other dependencies.
If you need to add tests to an existing Vue 2 application you might find the process a little tricky.
You'll need to install the version of Vue test utils and vue-jest that correspond to your version of Vue.
For example if you're running Jest 29, you'll need to install vue2-test
like so:
npm install --save-dev @vue/test-utils@1 @vue/vue2-jest@29
Because the tests run in an environment without a native DOM we'll also need to configure them to use the jsdom implementation.
Install the package like so:
npm install --save-dev jest-environment-jsdom
Then configure Jest to use the virtual JS DOM. Jest can be configured either via a dedicated file, or through your package.json
like so:
{ // other config... "jest": { "testEnvironment": "jsdom", "moduleFileExtensions": [ "js", "json", "vue" ], "setupFiles": [ "./jest-setup.js" ], "transform": { "^[^.]+.vue$": "@vue/vue2-jest", ".*\\.(js)$": "babel-jest" } } }
In my case I required some extra config that's loaded in jest-setup.js
. This is because my app had global dependencies for LoDash and a utilities file. To make these functions available in the test environment they are loaded like this.
jest-setup.js
import lodash from 'lodash'; import utils from './resources/js/utils.js'; global._ = lodash; global.utils = utils;
Top comments (0)