Я изо всех сил пытаюсь получить код, с которым я работаю, проверенный.
Во всех своих проектах я использую шутки для тестирования. он работает нормально, пока у меня есть файлы JavaScript, но я работаю с некоторыми пакетами, содержащими машинописный код. Код содержит зависимости с импортом и экспортом модуля ES2015, а при сборке его в комплекте с веб-пакетом, где целевой код по-прежнему содержит экспорт и импорт модуля ES2015
Jest запускается на узле и не может обрабатывать модули ES2015 (пока), и я не могу понять, как настроить babee-текст или jest для переноса кода зависимости в модули commonjs, когда я хочу запустить свои тесты
Я потратил безумное количество времени, пытаясь понять это, поэтому я ценю всю помощь, которую я могу получить.
в этом примере я клонировал пример проекта jest для 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
из файла в зависимости
есть идеи, как это решить?