Fra*_*ssi 3 unit-testing vue.js jestjs vuejs2 vue-test-utils
情况:
我正在我的 Vue 应用程序中实现单元测试,使用带有 Jest 配置的 vue-test-utils。
当我测试简单的组件时,一切都很好。但是当我测试导入其他依赖项的组件时,测试失败。
配置:
Vue 版本:2.5.17
@vue/test-utils: 1.0.0-beta.20
cli-plugin-unit-jest: 3.0.3
babel-jest:23.0.1
错误信息:
确切的错误消息取决于我要导入的依赖项。
例如,对于史诗微调器,错误是:
SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)
使用vue-radial-progress的错误是:
SyntaxError: Unexpected token <
Run Code Online (Sandbox Code Playgroud)
如何复制:
npm install --save epic-spinners)如果我执行这些步骤,测试将失败并显示上述错误消息。
问题:
如何处理 vue-test-utils / Jest 中的依赖项导入?
问题是某些模块可能无法正确编译。
解决方案是使用Jest 设置的transformIgnorePatterns属性。也就是说,从文档:
转换前与所有源文件路径匹配的正则表达式模式字符串数组。如果测试路径与任何模式匹配,则不会对其进行转换。
就我而言,这就是我解决问题的方式:
transformIgnorePatterns: [
"node_modules/(?!epic-spinners|vue-radial-progress)"
],
Run Code Online (Sandbox Code Playgroud)
编辑:
这是我的 jest.config.js
module.exports = {
moduleFileExtensions: [
'js',
'jsx',
'json',
'vue'
],
transform: {
'^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest',
},
transformIgnorePatterns: [
"node_modules/(?!epic-spinners|vue-radial-progress)"
// "node_modules/(?!epic-spinners)",
],
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
snapshotSerializers: [
'jest-serializer-vue'
],
testMatch: [
'**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
],
testURL: 'http://localhost/'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |