如何使用jest测试文件中的typescript文件导入模块

时间:2017-05-25 04:24:11

标签: typescript jestjs

我使用jest来测试我的typescript代码。

import ClassA from '../classA';
jest.mock('../classA');

当我从import文件中class classA.ts时,jest给了我一个错误:

export default ClassA;
^^^^^^
SyntaxError: Unexpected token export

这是我在jest中的package.json配置:

"devDependencies": {
  "@types/jest": "^19.2.3",
  "jest": "^20.0.4",
  "ts-jest": "^20.0.4",
  "ts-node": "^3.0.2",
  "typescript": "^2.3.2"
},
"jest": {
  "transform": {
    ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
  },
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
  "moduleFileExtensions": [
    "ts",
    "tsx",
    "js",
    "json"
  ]
}

4 个答案:

答案 0 :(得分:0)

{
    "compilerOptions": {
        "types": ["vue-typescript-import-dts"],
}
}
import Child = require('./child.vue')
import * as Child from './child.vue'
npm install vue-typescript-import-dts --save-dev

答案 1 :(得分:0)

我最终放弃了ts-jest,而只是将此代码复制/粘贴到我的项目fb ts jest上的文件中。但是,我确实必须在代码中添加一位才能让es6模块在jest测试中工作。

添加

|| path.endsWith('.js')

if声明。

答案 2 :(得分:0)

尝试在allowSyntheticDefaultImports

中将true设为tsconfig.json

答案 3 :(得分:0)

import { ClassA } from '../classA';