NestJS / TypeORM 단위 테스트 : JwtService의 종속성을 확인할 수 없습니다.

고귀한

이 컨트롤러를 단위 테스트하고 필요한 서비스 / 리포지토리를 조롱하려고합니다.

@Controller('auth')
export class AuthController {
    constructor(
        private readonly authService: AuthService,
        private readonly usersService: UsersService,
    ) {}

    @Post('register')
    public async registerAsync(@Body() createUserModel: CreateUserModel) {
        const result = await this.authenticationService.registerUserAsync(createUserModel);

        // more code here
    }

    @Post('login')
    public async loginAsync(@Body() login: LoginModel): Promise<{ accessToken: string }> {
        const user = await this.usersService.getUserByUsernameAsync(login.username);

        // more code here
    }
}

내 단위 테스트 파일은 다음과 같습니다.

describe('AuthController', () => {
    let authController: AuthController;
    let authService: AuthService;

    beforeEach(async () => {
        const moduleRef: TestingModule = await Test.createTestingModule({
            imports: [JwtModule],
            controllers: [AuthController],
            providers: [
                AuthService,
                UsersService,
                {
                    provide: getRepositoryToken(User),
                    useClass: Repository,
                },
            ],
        }).compile();

        authController = moduleRef.get<AuthenticationController>(AuthenticationController);
        authService = moduleRef.get<AuthenticationService>(AuthenticationService);
    });

    describe('registerAsync', () => {
        it('Returns registration status when user registration succeeds', async () => {
            let createUserModel: CreateUserModel = {...}

            let registrationStatus: RegistrationStatus = {
                success: true,
                message: 'User registered successfully',
            };

            jest.spyOn(authService, 'registerUserAsync').mockImplementation(() =>
                Promise.resolve(registrationStatus),
            );

            expect(await authController.registerAsync(createUserModel)).toEqual(registrationStatus);
        });
    });
});

그러나 이것을 실행할 때 다음과 같은 오류가 발생합니다.

  ● AuthController › registerAsync › Returns registration status when user registration succeeds

    Nest can't resolve dependencies of the JwtService (?). Please make sure that the argument JWT_MODULE_OPTIONS at index [0] is available in the JwtModule context.

    Potential solutions:
    - If JWT_MODULE_OPTIONS is a provider, is it part of the current JwtModule?
    - If JWT_MODULE_OPTIONS is exported from a separate @Module, is that module imported within JwtModule?
      @Module({
        imports: [ /* the Module containing JWT_MODULE_OPTIONS */ ]
      })

      at Injector.lookupComponentInParentModules (../node_modules/@nestjs/core/injector/injector.js:191:19)
      at Injector.resolveComponentInstance (../node_modules/@nestjs/core/injector/injector.js:147:33)
      at resolveParam (../node_modules/@nestjs/core/injector/injector.js:101:38)
          at async Promise.all (index 0)
      at Injector.resolveConstructorParams (../node_modules/@nestjs/core/injector/injector.js:116:27)
      at Injector.loadInstance (../node_modules/@nestjs/core/injector/injector.js:80:9)
      at Injector.loadProvider (../node_modules/@nestjs/core/injector/injector.js:37:9)
      at Injector.lookupComponentInImports (../node_modules/@nestjs/core/injector/injector.js:223:17)
      at Injector.lookupComponentInParentModules (../node_modules/@nestjs/core/injector/injector.js:189:33)

  ● AuthController › registerAsync › Returns registration status when user registration succeeds

    Cannot spyOn on a primitive value; undefined given

      48 |             };
      49 |
    > 50 |             jest.spyOn(authService, 'registerUserAsync').mockImplementation(() =>
         |                  ^
      51 |                 Promise.resolve(registrationStatus),
      52 |             );
      53 |

      at ModuleMockerClass.spyOn (../node_modules/jest-mock/build/index.js:780:13)
      at Object.<anonymous> (Authentication/authentication.controller.spec.ts:50:18)

어떻게 진행해야할지 잘 모르겠 기 때문에 도움이 필요합니다.

제이 맥 도니 엘

여기에서 몇 가지 주목할 점이 있습니다.

  1. 컨트롤러를 테스트하는 경우 두 개 이상의 수준 깊은 pf 서비스를 모의 할 필요가 없습니다.

  2. imports단위 테스트에서 배열 이 필요한 사용 사례가 거의 없어야합니다 .

대신 테스트 케이스에 대해 수행 할 수있는 작업은 다음 과 유사 합니다.

beforeEach(async () => {
  const modRef = await Test.createTestingModule({
    controllers: [AuthController],
    providers: [
      {
        provide: AuthService,
        useValue: {
          registerUserAsync: jest.fn(),
        }

      },
      {
        provide: UserService,
        useValue: {
          getUserByUsernameAsync: jest.fn(),
        }
      }
    ]
  }).compile();
});

이제를 사용하여 인증 서비스 및 사용자 서비스 modRef.get()를 가져 와서 나중에 모의를 추가하기 위해 변수에 저장할 수 있습니다. 다른 많은 예제가있는 이 테스트 저장소확인할 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

NestJS / TypeORM : 정의되지 않은 'createQueryBuilder'속성을 읽을 수 없습니다.

분류에서Dev

createQueryBuilder 함수 typeorm nestjs jest를 모의 할 수 없습니다.

분류에서Dev

Jest, NestJS, TypeORM 종단 간 테스트

분류에서Dev

데코레이터를 사용할 때 Nestjs가 종속성 인덱스 [0]를 확인할 수 없습니다.

분류에서Dev

Android 단위 테스트 종속성을 찾을 수 없습니다.

분류에서Dev

AngularJS 단위 테스트-TypeError : null의 'title'속성을 읽을 수 없습니다.

분류에서Dev

Nest는 UserService의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 testString의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 [ServiceName]의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 MailerService (?)의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 WithdrawService의 종속성을 확인할 수 없습니다.

분류에서Dev

단위 테스트 Unity 구성 파일 "유형 이름 또는 별칭 xxxx를 확인할 수 없습니다."

분류에서Dev

Nest는 ....의 종속성을 확인할 수 없습니다. 인덱스 [0]의 .. 인수를 다음 위치에서 사용할 수 있는지 확인하십시오.

분류에서Dev

maven-dependency-plugin은 테스트 범위 종속성을 제외 할 수 없습니다.

분류에서Dev

mock bean은 단위 테스트에서 의존성을 주입 할 수 없습니다.

분류에서Dev

mocha에서 단위 테스트를 위해 정의되지 않은 속성 'get'을 읽을 수 없습니다.

분류에서Dev

단위 테스트에서 세션을 인식 할 수 없습니다.

분류에서Dev

Nhibernate 단위 테스트. 자식 클래스는 기본 클래스 속성을 사용할 수 없습니다.

분류에서Dev

': google_maps_flutter : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

분류에서Dev

Flutter : ': shared_preferences : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 저장소의 종속성을 확인할 수 없습니다.

분류에서Dev

': app : mergeDebugAssets'작업의 종속성을 확인할 수 없습니다.

분류에서Dev

': app : compileDebugJavaWithJavac'작업의 종속성을 확인할 수 없습니다. Flutter

분류에서Dev

Flutter : ': geolocator : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

분류에서Dev

오류 : 작업의 종속성을 확인할 수 없습니다.

분류에서Dev

Nest는 (?)의 종속성을 확인할 수 없습니다. 인덱스 [0]에 PatientProfileRepository 인수가 있는지 확인하십시오.

분류에서Dev

Jest 및 Enzyme 단위 테스트 : TypeError : 정의되지 않은 'push'속성을 읽을 수 없습니다.

분류에서Dev

TypeORM + TypeError : getter 만있는 # <Object>의 EntityManager 속성을 설정할 수 없습니다.

분류에서Dev

Hibernate는 Embedded 클래스의 속성을 확인할 수 없습니다.

Related 관련 기사

  1. 1

    NestJS / TypeORM : 정의되지 않은 'createQueryBuilder'속성을 읽을 수 없습니다.

  2. 2

    createQueryBuilder 함수 typeorm nestjs jest를 모의 할 수 없습니다.

  3. 3

    Jest, NestJS, TypeORM 종단 간 테스트

  4. 4

    데코레이터를 사용할 때 Nestjs가 종속성 인덱스 [0]를 확인할 수 없습니다.

  5. 5

    Android 단위 테스트 종속성을 찾을 수 없습니다.

  6. 6

    AngularJS 단위 테스트-TypeError : null의 'title'속성을 읽을 수 없습니다.

  7. 7

    Nest는 UserService의 종속성을 확인할 수 없습니다.

  8. 8

    Nest는 testString의 종속성을 확인할 수 없습니다.

  9. 9

    Nest는 [ServiceName]의 종속성을 확인할 수 없습니다.

  10. 10

    Nest는 MailerService (?)의 종속성을 확인할 수 없습니다.

  11. 11

    Nest는 WithdrawService의 종속성을 확인할 수 없습니다.

  12. 12

    단위 테스트 Unity 구성 파일 "유형 이름 또는 별칭 xxxx를 확인할 수 없습니다."

  13. 13

    Nest는 ....의 종속성을 확인할 수 없습니다. 인덱스 [0]의 .. 인수를 다음 위치에서 사용할 수 있는지 확인하십시오.

  14. 14

    maven-dependency-plugin은 테스트 범위 종속성을 제외 할 수 없습니다.

  15. 15

    mock bean은 단위 테스트에서 의존성을 주입 할 수 없습니다.

  16. 16

    mocha에서 단위 테스트를 위해 정의되지 않은 속성 'get'을 읽을 수 없습니다.

  17. 17

    단위 테스트에서 세션을 인식 할 수 없습니다.

  18. 18

    Nhibernate 단위 테스트. 자식 클래스는 기본 클래스 속성을 사용할 수 없습니다.

  19. 19

    ': google_maps_flutter : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

  20. 20

    Flutter : ': shared_preferences : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

  21. 21

    Nest는 저장소의 종속성을 확인할 수 없습니다.

  22. 22

    ': app : mergeDebugAssets'작업의 종속성을 확인할 수 없습니다.

  23. 23

    ': app : compileDebugJavaWithJavac'작업의 종속성을 확인할 수 없습니다. Flutter

  24. 24

    Flutter : ': geolocator : compileDebugAidl'작업의 종속성을 확인할 수 없습니다.

  25. 25

    오류 : 작업의 종속성을 확인할 수 없습니다.

  26. 26

    Nest는 (?)의 종속성을 확인할 수 없습니다. 인덱스 [0]에 PatientProfileRepository 인수가 있는지 확인하십시오.

  27. 27

    Jest 및 Enzyme 단위 테스트 : TypeError : 정의되지 않은 'push'속성을 읽을 수 없습니다.

  28. 28

    TypeORM + TypeError : getter 만있는 # <Object>의 EntityManager 속성을 설정할 수 없습니다.

  29. 29

    Hibernate는 Embedded 클래스의 속성을 확인할 수 없습니다.

뜨겁다태그

보관