配置vue单元测试
配置vue/test-utils
配置test-utils有两种方式
第一种是在已创建好的vue项目里使用
vue add test-utils
使用该命令之后,vue会自动下载依赖,并且给出一个组件测试的例子。
手动配置
首先需要下载依赖,注意一点,在vue2中,需要下载@vue/test-utils@1 版本,在vue3中在下载默认版本即可,本文默认下载vue2中的依赖包。
npm i -D @babel/preset-env @vue/cli-plugin-unit-jest @vue/vue2-jest babel-core@7.0.0-bridge.0 babel-jest jest jest-serializer-vue vue-jest
下载完依赖以后,需要在babel.config.js中加入设置
{ "presets": ["@babel/preset-env"] }
然后在jest.config.js中增加如下设置
module.exports = { //use jsdom environment since jest v27 testEnvironment: 'jsdom', // 表示是否应该在运行期间报告每个单独的测试。所有的错误在执行后仍然会显示在底部。注意,如果只有一个测试文件在运行,它将默认为 "true"。 verbose: true, // 这个选项设置了jsdom环境的URL。它反映在诸如location.href等属性中。 testURL: 'http://localhost/', // 告诉jest需要解析的文件 moduleFileExtensions: ['js', 'ts', 'json', 'vue'], // 告诉jest去哪里找模块资源,同webpack中的modules moduleDirectories: ['src', 'node_modules'], // 告诉jest针对不同类型的文件如何转义 transform: { '.*\\.(vue)$': 'vue-jest', '.*\\.(js)$': 'babel-jest' }, // 告诉jest在编辑的过程中可以忽略哪些文件,默认为node_modules下的所有文件 transformIgnorePatterns: ['<rootDir>/node_modules/'], // 别名,同webpack中的alias moduleNameMapper: { '^@/(.*)$': '<rootDir>/src/$1' }, // 快照的序列化工具 snapshotSerializers: ['jest-serializer-vue'], // 告诉jest去哪里找我们编写的测试文件 testMatch: [ '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)', '**/__tests__/unit/*.(spec|test).(js|jsx|ts|tsx)' ] // 在执行测试用例之前需要先执行的文件 // setupFiles: ['jest-canvas-mock'] }
在配置完如上的这些配置以后,就可以在test/unit文件或者__tests/unit下编写单元测试。