在Vuejs项目中,节点版本:v10.6.0
Package.json版本:
"devDependencies": {
"@vue/cli-plugin-babel": "^3.0.0-rc.4",
"@vue/cli-plugin-unit-jest": "^3.0.0-rc.4",
"@vue/cli-service": "^3.0.0-rc.4",
"@vue/test-utils": "^1.0.0-beta.20",
"babel-core": "7.0.0-bridge.0",
"babel-jest": "^23.0.1",
"vue-template-compiler": "^2.5.16"
},
Run Code Online (Sandbox Code Playgroud)
当我使用内置任务运行它时,
"test:unit": "vue-cli-service test:unit"
Run Code Online (Sandbox Code Playgroud)
但是因为我想调试,所以我使用node命令手动运行:
node node_modules/.bin/jest
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
FAIL tests/unit/HelloWorld1.spec.js
? Test suite failed to run
.../tests/unit/HelloWorld1.spec.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import "core-js/modules/es6.array.iterator";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
Run Code Online (Sandbox Code Playgroud)
之后我添加了.babelrc以及以下内容
{"env": {
"development": {
"plugins": ["transform-es2015-modules-commonjs"]
},
"test": {
"plugins": ["transform-es2015-modules-commonjs"]
}
}}
Run Code Online (Sandbox Code Playgroud)
事情变得更好了,它可以在没有"导入"的情况下传递测试文件,一旦导入,它将显示不同的错误:
....tests/unit/HelloWorld1.spec.js:3
import _interopRequireWildcard from "..../node_modules/@babel/runtime/helpers/builtin/es6/interopRequireWildcard";
^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
Run Code Online (Sandbox Code Playgroud)
Jia*_*hen 14
经过几天的挣扎.最后,我得到了在VueJs应用程序的调试模式下运行jest的解决方案.
在调入vue-cli-service之后@vue/cli-plugin-unit-jest
,我发现了以下代码,然后产生了jest进程:
process.env.VUE_CLI_BABEL_TARGET_NODE = true
process.env.VUE_CLI_BABEL_TRANSPILE_MODULES = true
Run Code Online (Sandbox Code Playgroud)
所以解决方案非常简单.
只需在运行jest命令之前添加这两个环境变量.以下命令将在调试模式下启动jest:
export VUE_CLI_BABEL_TARGET_NODE=true
export VUE_CLI_BABEL_TRANSPILE_MODULES=true
./node_modules/jest/bin/jest.js --clearCache
node --inspect-brk ./node_modules/jest/bin/jest.js -i
Run Code Online (Sandbox Code Playgroud)
确保不要 添加".babel.rc",这将使VueJS babel成为现实.
通常,您需要使用该--clearCache
选项运行jest .否则,陈旧生成的文件也会搞乱.
开玩笑选项-i
也很重要.否则,测试将在单独的进程中运行,该进程不会处于调试模式.