typescript - 在 WebStorm 中为 Vue + TypeScript 配置 jest 运行配置
问题描述
我想在 WebStorm 中执行我的所有测试,但我无法让它工作。我使用 vue-cli 3.0.0-rc3 使用 Babel、TypeScript 和 Vue 生成了一个项目。我的运行配置如下:
但是我收到以下错误:
● Test suite failed to run
/Users/calberca/Tmp/test-3/src/components/HelloWorld.vue:2
import "core-js/modules/es6.promise";
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: Unexpected string
1 | import { shallowMount } from "@vue/test-utils";
> 2 | import HelloWorld from "../HelloWorld.vue";
| ^
3 |
4 | describe("HelloWorld.vue", () => {
5 | it("renders props.msg when passed", () => {
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
at Object.<anonymous> (src/components/__tests__/HelloWorld.spec.ts:2:1)
当我yarn test:unit
从控制台运行时,测试通过了。但是当我运行jest --config=jest.config.js
测试失败时。
我最初的想法是它与 ts-jest 不使用 Babel 转换代码有关,并且 vue-cli 以某种方式切换了一个选项来做到这一点,我想使用相同的命令,但我不知道我应该做什么让它工作。
注意:我在一个更大的项目中这样做了,并且 80% 的测试通过了,但是仍然有一些测试没有通过,并且出现了关于 ES6 及其他特性的类似错误。
编辑
Webstorm(2018.3)的新更新以某种方式解决了它,我什么都不做:)
解决方案
使用以下配置为我工作:
我必须更改jest.config.js
如下才能使这项工作:
module.exports = {
moduleFileExtensions: [
'ts',
'tsx',
'js',
'jsx',
'json',
'vue'
],
transform: {
'^.+\\.vue$': 'vue-jest',
'^.+\\.tsx?$': 'ts-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
testMatch: ['<rootDir>/(tests/unit/**/*.spec.(ts|tsx|js)|**/__tests__/*.(ts|tsx|js))'],
snapshotSerializers: [
'jest-serializer-vue'
]
}
推荐阅读
- javascript - 如何在不使用按钮、击键或窗口加载的情况下始终同步输入 HTML 字段?
- javascript - 在 laravel 中使用 ajax jquery 将数据添加到数据库
- java - 下载大文件时触发垃圾收集
- javascript - 如何使用 JavaScript 和 ExcelJS 检查不同工作表中的单元格值?
- numbers - 创建后缀数字球拍
- delphi - 从 Delphi/C++Builder 应用程序连接到 MapR 数据库
- java - 具有多个 JsonSerializer 映射的 DefaultKafkaProducerFactory
- c++ - 无法创建 VC++ 项目 Visual Studio 2015 社区
- postgresql - 在postgresql中如何从一个字段中获取最后4个数字并将其复制到一个新字段
- javascript - 在这里地图,我如何添加一个新的 UI 按钮?