我正在努力获取一些我测试过的代码。
在我所有的项目中,我都使用笑话进行测试。只要我有javascript文件,它就可以正常工作,但是我确实可以处理某些包含打字稿代码的软件包。该代码包含与ES2015模块导入和导出的依赖关系,并在与webpack捆绑构建时捆绑在一起,其中目标代码仍包含ES2015模块导出和导入
Jest在节点上运行并且无法处理ES2015模块(尚未),当我想运行测试时,我无法弄清楚如何配置打字稿babel或jest将依赖项代码转换为commonjs模块
我花了很多时间试图解决这个问题,因此,我感谢能获得的所有帮助。
在此示例中,我为Typescript克隆了最好的示例项目,并将其修改为包含一个包含ES2015模块的依赖项以说明问题
tsconfig.json
{
"compilerOptions": {
"allowJs": true,
"module": "commonjs"
}
}
package.json
{
"devDependencies": {
"@types/jest": "^23.1.1",
"@types/node": "^10.12.3",
"jest": "*",
"typescript": "*",
"ts-jest": "*"
},
"dependencies": {
"lodash-es": "^4.17.11" //has es2015 exports
},
"jest": {
"moduleFileExtensions": [
"ts",
"tsx",
"js"
],
"transform": {
"^.+\\.(ts|tsx)$": "ts-jest"
},
"globals": {
"ts-jest": {
"tsConfigFile": "tsconfig.json"
}
},
"testMatch": [
"**/__tests__/*.+(ts|tsx|js)">
]
}
}
wrap.ts
import {map} from "lodash-es";
export function wrap(a: number, b: number): number {
return map([a,b],i=>({i}));
}
wrap.test.ts
import {wrap} from "../sum"
it('wrap ', ()=> {
expect(wrap(1, 2)).toBe([{i:1},{i:1}]);
});
我开玩笑的时候
export { default as add } from './add.js';
^^^^^^
SyntaxError: Unexpected token export
来自依赖项中的文件
有关如何解决此问题的任何想法?