装置
-
应用如下命令,vue 会主动创立好配置和依赖
vue add @vue/unit-jest
- 手动配置
1. 装置 Jest 和 Vue Test Utilsnpm install --save-dev jest @vue/test-utils
2. 装置 babel-jest、vue-jest 和 7.0.0-bridge.0 版本的 babel-corenpm install --save-dev babel-jest vue-jest babel-core@7.0.0-bridge.0
3. 装置 jest-serializer-vuenpm install --save-dev jest-serializer-vue
配置 Jest
Jest 的配置能够在 package.json 里配置;也能够新建一个文件 jest.config.js,放在我的项目根目录即可。这里我抉择的是配置在 jest.config.js 中:
配置阐明
module.exports = {
// 通知 jest 须要解析的文件
moduleFileExtensions: [
'js',
'jsx',
'json',
'vue'
],
// 通知 jest 去哪里找模块资源,同 webpack 中的 modules
moduleDirectories: [
'src',
'node_modules'
],
// 通知 jest 针对不同类型的文件如何本义
transform: {'^.+\\.(vue)$': '<rootDir>/node_modules/vue-jest',
'^.+\\.js$': '<rootDir>/node_modules/babel-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest',
'^.+\\.ts?$': 'ts-jest'
},
// 通知 jest 在编辑的过程中能够疏忽哪些文件,默认为 node_modules 下的所有文件
transformIgnorePatterns: [
'<rootDir>/node_modules/'
+ '(?!(vue-awesome|veui|resize-detector|froala-editor|echarts|html2canvas|jspdf))'
],
// 别名,同 webpack 中的 alias
moduleNameMapper: {'^src(.*)$': '<rootDir>/src/$1',
'^@/(.*)$': '<rootDir>/src/$1',
'^block(.*)$': '<rootDir>/src/components/block/$1',
'^toolkit(.*)$': '<rootDir>/src/components/toolkit/$1'
},
snapshotSerializers: ['jest-serializer-vue'],
// 通知 jest 去哪里找咱们编写的测试文件
testMatch: [// '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
'**/tests/unit/**/Test.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
// 在执行测试用例之前须要先执行的文件
setupFiles: ['jest-canvas-mock']
};
各配置项阐明:
其中须要留神的一点是,因为我的项目中用到了 veui,node_modules 中援用的是源码,未通过 babel 本义。因而须要在 transformIgnorePatterns 中通知 jest,须要对其进行编译。其余引入的第三方库同理。
配置 package.json
写一个执行测试的命令脚本:
{
"script": {"test:unit": "vue-cli-service test:unit"}
}
Vue Test Utils