Jest在尝试加载具有动态导入代码的vueJs组件时抛出错误。
组件:
<script>
const Modal = () => import(/* webpackChunkName: "Modal" */ "../pages/common/Modal.vue");
export default {
name: "TileEditModal",
components: {
Modal
},
data() {
return
},
methods: {
test() {
return true;
}
}
}
</script>
测试:
import TileEditModal from "./TileEditModal.vue"
即使没有运行测试,只需导入该组件也会引发以下错误:
return import( /* webpackChunkName: "Modal" */"../pages/common/Modal.vue");
^^^^^^
SyntaxError: Unexpected token import
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
at Object.<anonymous> (srcVue/pages/landing/TileEditModal.vue.test.js:3:22)
我试过这个solution,但它对我没用。
我正在使用jest-vue-preprocessor
和jest:
"jest": {
"moduleFileExtensions": [
"js",
"vue"
],
"transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/jest-vue-preprocessor"
},
"clearMocks": true,
"resetMocks": true,
"resetModules": true
},
我也尝试将env.test预设添加到babel:
{
"presets": [
"es2015",
"stage-2",
"stage-0"
],
"env": {
"test": {
"presets": [
"es2015",
"stage-2",
"stage-0"
]
}
}
}
到目前为止,没有任何作品,任何想法?我真的希望将这些代码拆分为单个组件。
答案 0 :(得分:3)
对我有用的解决方案是使用dynamic import babel plugin,但也可以在没有缓存的情况下运行jest。
jest --no-cache
不幸的是,在那之后再次使用缓存运行它仍然无法通过测试,所以我不确定发生了什么,但是如果我离开--no-cache
它会起作用。只是让测试更慢。