#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. : Если я изменю импорт на относительный импорт, он будет работать нормально, но тогда мне придется изменить импорт во всем проекте, что не кажется хорошим вариантом. Я хотел бы сохранить его в качестве последнего средства.