1

I had started studying testing in nestjs and I'm stuck. I'm using e2e tests.

When I try to run the test, I get an error message:

 FAIL  test/category.e2e-spec.ts
 ● Test suite failed to run

Cannot find module 'src/auth/jwt-auth-unprotected.guard' from '../src/category/category.controller.ts'

Require stack:
  C:/Users/losak/OneDrive/Desktop/back.zumzak/src/category/category.controller.ts
  C:/Users/losak/OneDrive/Desktop/back.zumzak/src/category/category.module.ts
  category.e2e-spec.ts

  13 | } from '@nestjs/common';
  14 | import { Request } from 'express';
> 15 | import { JwtAuthUnprotectedGuard } from 'src/auth/jwt-auth-unprotected.guard';
     | ^
  16 | import { JwtAuthGuard } from 'src/auth/jwt-auth.guard';
  17 | import { CategoryService } from './category.service';
  18 | import { CreateCategoryDto } from './dto/create-category.dto';

  at Resolver._throwModNotFoundError (../node_modules/.pnpm/jest-resolve@28.1.3/node_modules/jest-resolve/build/resolver.js:491:11)
  at Object.<anonymous> (../src/category/category.controller.ts:15:1)

Here's my spec code (category.e2e-spec.ts):

import { Test } from '@nestjs/testing';
import { CategoryModule } from '../src/category/category.module';
import * as request from 'supertest';

describe('CategoryController (e2e)', () => {
  let app: INestApplication;

  beforeAll(async () => {
    const moduleFixture = await Test.createTestingModule({
      imports: [CategoryModule],
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();
  });

  it('/ (GET)', () => {
    return request(app.getHttpServer())
      .get('/category')
      .expect(200)
  });
}); 

Here's my module (category.module.ts):

import { Module } from '@nestjs/common';
import { CategoryController } from './category.controller';
import { ShopModule } from 'src/shop/shop.module';
import { FileService } from 'src/file/file.service';
import { PrismaService } from 'src/prisma.service';
import { CategoryService } from './category.service';

@Module({
  imports: [ShopModule],
  controllers: [CategoryController],
  providers: [CategoryService, PrismaService, FileService],
})
export class CategoryModule {}

And here's my controller (category.controller.ts) import:

import { Request } from 'express';
import { JwtAuthUnprotectedGuard } from 'src/auth/jwt-auth-unprotected.guard';
import { JwtAuthGuard } from 'src/auth/jwt-auth.guard';
import { CategoryService } from './category.service';
import { CreateCategoryDto } from './dto/create-category.dto';
import { ParamsCategoryDto } from './dto/params-category.dto';
import { ParamsSearchDto } from './dto/params-search.dto';
import { UpdateCategoryDto } from './dto/update-category.dto';

What should I do?

SPR1NG
  • 174
  • 1
  • 11

1 Answers1

0

Here is explained.

In the overview don't use absolute path, those are lost when compiling, use relative path instead.

If using VSCode set the imports to relative in the typescript.preferences.importModuleSpecifier setting, it is by default shortest.

Vitoru
  • 393
  • 3
  • 7