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"
]
}