NestJS Jest 경로 설정


jest를 통해 테스트코드를 작성하는 과정에서 계속해서 경로에 대한 에러가 발생했다.

Please check your configuration for these entries:
    {
      "moduleNameMapper": {
        "/^prisma\\/(.*)$/": "/Users/donghyeoklim/Desktop/boostcamp/web17_morak/app/backend/$1"
      },
      "resolver": undefined
    }

      1 | import { ForbiddenException, Injectable, NotFoundException } from '@nestjs/common';
    > 2 | import { PrismaService } from 'prisma/prisma.service';
        | ^
      3 | import { Group, Member } from '@prisma/client';
      4 | import { MemberInformationDto } from 'src/member/dto/member.dto';
      5 | import { CreateGroupsDto } from './dto/create-groups.dto';

예를 들면 이러한 에러

처음에는 member API에 대한 테스트코드를 작성하는데 계속 AtGuard 파일에 대한 경로 에러가 발생했다.

member.controller.ts

import { AtGuard } from 'src/auth/guards/at.guard';

@Controller('member')
@UseGuards(AtGuard)
export class MemberController {
  constructor(private readonly memberService: MemberService) {}

  @Get('/me')
  async getUserData(@Req() req: Request, @Res() res: Response): Promise<void> {
    try {
      const encryptedToken = req.cookies.access_token;
      const userData = await this.memberService.getUserData(encryptedToken);

      res.json(userData);
    } catch (error) {
      throw new UnauthorizedException('Failed to get user profile');
    }
  }
}

이러한 코드에서 AtGuard에 대해 계속 경로 에러가 발생했다.

이는 Jest에서 테스트 코드를 작성할 때 해당 컨트롤러를 가져오는 과정에서 경로를 참조하지 못해서 발생한다.

import { AtGuard } from '../../src/auth/guards/at.guard';

이렇게 작성을 해주면 오류가 해결이 되었다. ../../ 으로 세세하게 설정해주는 것 하지만 이 방법은 import 자동완성을 한 것을 전부 수정해줘야하는 번거로움이 존재한다.