postman으로 통합 테스트를 하는 도중 한 팀원이 말하길
"귀찮게 postman으로 일일이 왔다갔다 하면서 작성하고 테스트 하는 것 보다, 우리 인텔리제이 울티메이트 사용하는 중이니깐 http 클라이언트로 테스트 하는건 어때요?"
이 말을 듣고 postman 말고 다른 통합 테스트 방식이 있었지? 라는 생각이 들고 이에 해보고 싶어서 http 클라이언트를 작성하기 했다.
인텔리제이 '메인 메뉴'에서 settings > plugins > marketplace 에 들어가서 http client 찾고 설치 하면 간단히 플러그인 설치를 완료 할 수 있다.

사실 위치는 크게 상관 없지만 현업에서는 주로 많이 두는 위치가 있다. 빠른 접근성과 역할에 따른 구분을 위해 프로젝트 디렉토리 아래에 두는 경우가 많다.

처음에는 하나의 http 파일로 사용했지만, 기능이 많을 수 록 엄청나게 긴 코드가 만들어져서 한개의 테스트를 위해 아래로 쭉 내려가야하는 번거로움이 발생하기에 각 기능별로 나누어 http 파일을 작성하게 되었다.

Auth_API 부분으로 학생, 튜어, 관리자의 회원가입과 로그인이 구현되어 있다.
로그인 방식은 jwt 방식을 사용하기에 토큰을 studentAccessToken에 담는 걸 확인 할 수 있다.

이렇게 설정하면 다른 http 파일에서 {{studentAccessToken}}로 사용하면
인텔리제이가 알아서 studentAccessToken의 값을 입력에서 처리한다.

인텔리제이가 자체적으로 판단하서 다른 http파일에 설정된 토큰의 값을 참조하여
다른 http파일에 적용하여 테스트 코드가 정상적으로 작동하게 만들어 주는데
가끔씩 해당 방식이 안 먹힐 때가 있다. 이는 명시적인 문제로 http의 환경변수 파일을 만들어 주면 해결이 된다.

위 처럼 http-client.env.json 생성하고 내용에
'dev : {}' 로 지정하면 {} 안의 내용이 dev의 환경변수로 설정이 된다.
이후 http 파일에서 Run with: 의 설정을 dev 수정하면
해당 http 파일은 dev에 설정된 환경변수를 따르기에 명시적 문제를 해결 할 수 있다.

테스트를 위해 http-client.env.json에 JWT 시크릿 키를 설정해서 넣어두었다.
인텔리제이 환경변수로 http-client.env.json 넣는 방법이 없으니 저렇게 세팅 하였지만
그렇기에 gitignore에 등록하여 깃허브에 공유 되지 않도록 막아둬야 한다.

참고로 나중에 알게된 사실인데
http-client.private.env.json 파일을 만들어 여기에 민감한 정보를 넣고 구별하여 관리 하는게 더 좋은 방법이라고 한다.
postman 대신 처음으로 인텔리제이 http client를 사용했는데
postman 에서는 하나 테스트 하는데 세팅하고 작업하며 은근히 손이 많이 가면서도 토큰 같은 건 일일히 스크립을 작성해야 했는데,
http client는 다른 프로그램 거칠 필요없이 바로 작성하여 테스트 할 수 있고 토큰 역시 환경변수 파일 하나 만들어 주고 설정 한 두개 해주면 알아서 적용되니 엄청 편했습니다.
또한 테스트코드 대신에 http client만으로 테스트를 한다고 어디서 들었는데, 그렇다면 엄청나게 매력적이라고 생각하는데 그렇게 해도 되는지는 모르겠습니다.