Тестовый модуль Nest js не найден - PullRequest
0 голосов
/ 10 марта 2020

Я создал простой REST API, используя Mongdoose с Nest js. У меня в общей сложности 2 теста, и они проваливаются. Результат теста:

FAIL src / app / auth / auth.service.spe c .ts ● Не удалось запустить набор тестов

Cannot find module '@shared/errors' from 'auth.service.ts'

   5 | 
   6 | import { AppLogger } from '../logger/logger';
>  7 | import { Errors } from '@shared/errors';
     | ^
   8 | import { ILoginDto } from './dto/login.dto';
   9 | import { ITokenDto } from './dto/auth.dto';
  10 | import { IUser } from '@user/document/user.doc';

  at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)
  at Object.<anonymous> (auth/auth.service.ts:7:1)

FAIL src /app/user/user.service.spec.ts ● Не удалось запустить набор тестов

Cannot find module '@shared/errors' from 'user.service.ts'

  1 | import { BadRequestException, Injectable } from '@nestjs/common';
  2 | import { InjectModel } from '@nestjs/mongoose';
> 3 | import { Errors } from '@shared/errors';
    | ^
  4 | import { createMultipleRandom } from '@shared/utils';
  5 | import { Model } from 'mongoose';
  6 | import { AppLogger } from '../logger/logger';

  at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)
  at Object.<anonymous> (user/user.service.ts:3:1)

Наборы тестов: 2 не пройдены, 2 всего тестов: 0 всего моментальных снимков: 0 всего времени: 2 751 с Запущены все тестовые наборы.

tsconfig. json:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "paths": {
      "@app/*": ["src/app/*"],
      "@auth/*": ["src/app/auth/*"],
      "@config/*": ["config/*"],
      "@logger/*": ["src/app/logger/*"],
      "@shared/*": ["src/app/shared/*"],
      "@user/*": ["src/app/user/*"],
    }
  },
  "include": [
    "src/**/*"
  ],

  "exclude": ["node_modules", "dist"]
}

auth.service.spe c .ts:

import { Test, TestingModule } from '@nestjs/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
  let service: AuthService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [AuthService],
    }).compile();

    service = module.get<AuthService>(AuthService);
  });

  it('should be defined', () => {
    expect(service).toBeDefined();
  });
});

In @ shared / error.ts я просто экспортирую постоянную переменную. Так как это не модуль, как я должен импортировать это в тесте? Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 10 марта 2020

Поскольку вы используете отображение путей машинописного текста, вам также необходимо обновить конфигурацию jest, указав также сопоставленные пути. В вашей конфигурации jest необходимо добавить следующее:

{
  ...
  "moduleNameMapper": {
    "^@Shared/(.)*$": "<rootDir>/src/app/shared/$1"
  }
}

Предполагая, что для <rootDir> установлено значение ., а не ./src. Вы можете найти больше информации здесь .

...