【发布时间】:2023-02-09 14:54:14
【问题描述】:
在使用 es6 模块以及混合 .js 和 .ts 文件的项目时,我正在努力正确地存根/模拟单元测试。
根据this post,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 并按照 esm 约定导入为.js)由于项目要求,我需要在 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:(从this answer 抓取)
{ "node-option": [ "experimental-specifier-resolution=node", "loader=ts-node/esm" ] }
【问题讨论】:
标签: node.js typescript unit-testing mocha.js testdoublejs