Не удалось импортировать модуль во время запуска mocha в приложении NestJS

#typescript #unit-testing #mocha.js #nestjs

Вопрос:

У меня есть приложение NestJS, и я пытаюсь написать для него модульные тесты, используя mocha.

Это мой тестовый сценарий:

 mocha --require ts-node/register src/**/*.spec.ts  

Внутри модулей я использую импорт, такой как src/path_to_service . Пример:

 import { BaseService } from 'src/shared/services/base.abstract.repository';  

Теперь, когда я могу мокко, я получаю следующую ошибку:

 Error: Cannot find module 'src/shared/services/base.abstract.repository' Require stack: - /home/f2049/work/learning/base-template-nest/src/todos/todos.service.ts - /home/f2049/work/learning/base-template-nest/src/todos/todos.controller.ts - /home/f2049/work/learning/base-template-nest/src/todos/todos.controller.spec.ts - /home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/nodejs/esm-utils.js - /home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/mocha.js - /home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/cli/one-and-dones.js - /home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/cli/options.js - /home/f2049/work/learning/base-template-nest/node_modules/mocha/bin/mocha  at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)  at Function.Module._resolveFilename.sharedData.moduleResolveFilenameHook.installedValue [as _resolveFilename] (/home/f2049/work/learning/base-template-nest/node_modules/@cspotcode/source-map-support/source-map-support.js:679:30)  at Function.Module._load (node:internal/modules/cjs/loader:778:27)  at Module.require (node:internal/modules/cjs/loader:1005:19)  at require (node:internal/modules/cjs/helpers:102:18)  at Object.lt;anonymousgt; (/home/f2049/work/learning/base-template-nest/src/todos/todos.service.ts:4:1)  at Module._compile (node:internal/modules/cjs/loader:1101:14)  at Module.m._compile (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1365:23)  at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)  at Object.require.extensions.lt;computedgt; [as .ts] (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1368:12)  at Module.load (node:internal/modules/cjs/loader:981:32)  at Function.Module._load (node:internal/modules/cjs/loader:822:12)  at Module.require (node:internal/modules/cjs/loader:1005:19)  at require (node:internal/modules/cjs/helpers:102:18)  at Object.lt;anonymousgt; (/home/f2049/work/learning/base-template-nest/src/todos/todos.controller.ts:2:1)  at Module._compile (node:internal/modules/cjs/loader:1101:14)  at Module.m._compile (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1365:23)  at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)  at Object.require.extensions.lt;computedgt; [as .ts] (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1368:12)  at Module.load (node:internal/modules/cjs/loader:981:32)  at Function.Module._load (node:internal/modules/cjs/loader:822:12)  at Module.require (node:internal/modules/cjs/loader:1005:19)  at require (node:internal/modules/cjs/helpers:102:18)  at Object.lt;anonymousgt; (/home/f2049/work/learning/base-template-nest/src/todos/todos.controller.spec.ts:2:1)  at Module._compile (node:internal/modules/cjs/loader:1101:14)  at Module.m._compile (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1365:23)  at Module._extensions..js (node:internal/modules/cjs/loader:1153:10)  at Object.require.extensions.lt;computedgt; [as .ts] (/home/f2049/work/learning/base-template-nest/node_modules/ts-node/src/index.ts:1368:12)  at Module.load (node:internal/modules/cjs/loader:981:32)  at Function.Module._load (node:internal/modules/cjs/loader:822:12)  at Module.require (node:internal/modules/cjs/loader:1005:19)  at require (node:internal/modules/cjs/helpers:102:18)  at Object.exports.requireOrImport (/home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/nodejs/esm-utils.js:56:20)  at async Object.exports.loadFilesAsync (/home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/nodejs/esm-utils.js:88:20)  at async singleRun (/home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/cli/run-helpers.js:125:3)  at async Object.exports.handler (/home/f2049/work/learning/base-template-nest/node_modules/mocha/lib/cli/run.js:374:5)  

Есть ли какие-либо аргументы, которые я передал во время запуска мокко? Что я делаю не так?

P.S. : Если я изменю импорт на относительный импорт, он будет работать нормально, но тогда мне придется изменить импорт во всем проекте, что не кажется хорошим вариантом. Я хотел бы сохранить его в качестве последнего средства.