node.js - Typescript'te mocha ile es6 taklidi yapma


ES6 modüllerini kullanırken ve .js ile .ts dosyalarının karışık olduğu bir projede birim testlerini düzgün şekilde stub/mock yapmakta zorlanıyorum.

Bu gönderiye göre, testdouble ihtiyaç duyduğum ESM taklidini sağlayabilmelidir. Ancak, çalışması için --loader=testdouble kullanılması gerekiyor ve şu anda --loader=ts-node/esm kullanıyorum. ts-node/esm'yi değiştirmeyi denersen, Typescript dosyalarını bulamıyor:

Hata [ERR_MODULE_NOT_FOUND]: /Users/repos/my-repo/test/constants.tjs dosyasından içe aktarılan '/Users/repos/my-repo/src/models/connectionModel.js' modülü bulunamıyor

(connectionModel TypeScript'tir ve esm konvansiyonuna göre .js olarak içe aktarılmıştır)

Proje gereksinimleri nedeniyle, projenin es6+ ile derlenmesi gerekecek, bu yüzden type: module kaldırmak veya module: cjs ayarlamak benim için uygun seçenekler değil.

Her iki yükleyiciyi de kullanmanın uygun bir yolu var mı, yoksa es6 ile sahteleme yapmak için başka uygun bir yol var mı?

package.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: (bu cevaptan alınıyor)

{
   "node-option": [
      "experimental-specifier-resolution=node",
      "loader=ts-node/esm"
   ]
}