Издевательство над es6 с мокко в Typescript
Я изо всех сил пытаюсь правильно заглушить / имитировать модульные тесты при использовании модулей es6 вместе с проектом со смешанными файлами .js и .ts.
Согласно этому сообщению ,testdouble
должен быть в состоянии обеспечить насмешку ESM, в которой я нуждаюсь. Однако требует использования--loader=testdouble
для работы, и я в настоящее время использую--loader=ts-node/esm
. Если я попытаюсь заменитьts-node/esm
, он не может найти файлы Typescript:
Ошибка [ERR_MODULE_NOT_FOUND]: не удается найти модуль «/Users/repos/my-repo/src/models/connectionModel.js», импортированный из /Users/repos/my-repo/test/constants.tjs
(connectionModel
является ts и импортируется как.js
по соглашению esm)
Из-за требований проекта мне нужно, чтобы проект был скомпилирован в es6+, поэтому удалениеtype: module
или настройкаmodule: cjs
для меня не приемлемые варианты.
Есть ли жизнеспособный способ использовать оба загрузчика или какой-либо другой жизнеспособный способ издеваться над es6?
пакет.json:
{
"type": "module",
"scripts": {
"test": mocha test/*.js test/*.spec.ts -r dotenv/config
}
}
tsconfig.json:
{
"compilerOptions": {
"target": "es2016",
"module": "es6,
"moduleResolution": "node16"
"allowJs": true,
"esModuleInterop": true
},
"ts-node": {
"esm": true
}
"include": [
"./src/**/*",
"test/**/*/.ts",
"test/**/*.js"
}
}
.mocharc.json: (взято из этого ответа )
{
"node-option": [
"experimental-specifier-resolution=node",
"loader=ts-node/esm"
]
}