Controller의 테스트 코드를 작성 중에 문득, @UseGuards(LocalAuthGuard) 데코레이터를 검증하고 싶었다.
그래서 방법을 찾아본 결과 다음 방법을 사용해서 검증을 해볼 수 있었다. 하지만, 쓸모가 있는지는 아직 잘 모르겠다.
혹시 참고하실 분들은 참고하시길 바랍니다.
// 컨트롤러의 logIn 함수로 부터 Decorator들의 key값들을 얻는다.
const keys = Reflect.getMetadataKeys(AuthController.prototype.logIn);
// key값을 이용해서 Decorator data를 뽑아낸다.
// 아직 어떤식으로 활용해야할지는 잘 모르겠다.
keys.forEach((el) => {
const value = Reflect.getMetadata(el, AuthController.prototype.logIn);
console.log(value);
});
---
// 아래는 @UserGuards를 검증하는 로직이다.
// 근데 이게 쓸모가 있나...?
const guards = Reflect.getMetadata(
'__guards__',
AuthController.prototype.logIn,
);
const guard = new guards[0]();
expect(guard).toBeInstanceOf(LocalAuthGuard);
TDD를 해보려고 이것저것 건드려보고 있는데... 꽤 어렵다.
지금은 Controller의 함수를 사용하면 거기에 따른 pipe들(데코레이터들)도 자동으로 걸러지는 그런 방법이 없을까 고민중이다.
'Back-end > nest.js' 카테고리의 다른 글
Nest.js : Nest.js로 Redis와 연동하여 세션 로그인 구현하기 (2) (0) | 2023.02.23 |
---|---|
Nest.js : Nest.js로 Redis와 연동하여 세션 로그인 구현하기 (1) (8) | 2023.02.19 |
Nest.js : Ports and Adapters Architecture 구현하기 (2) (0) | 2023.02.16 |
Nest.js : Session 로그인을 위한 Redis 연동, 그리고 Ports and Adapters Architecture에 적용하기 (0) | 2023.02.16 |
Nest.js : Ports and Adapters Architecture 구현하기 (1) (1) | 2023.02.03 |