Издевательство над 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"
   ]
}

0 ответов

Другие вопросы по тегам