본문 바로가기

분류 전체보기66

Wiremock을 이용한 테스트 작성기 지난 Feign Client 적용기에 이어서 WireMock을 이용한 테스트 경험을 소개합니다. 서론 이번 프로젝트에서는 기능 개발 시 인수테스트, 통합테스트, 단위테스트를 먼저 작성하고 개발을 진행하려고 노력하고 있습니다. 저는 OAuth 로그인 기능을 맡았고 해당 기능에 대한 인수테스트를 작성하는 과정에서 "어떻게하면 외부 api에 대해 실제 상황에 가까운 테스트를 할 수 있을지"에 대해 고민하게 되었습니다. 일반적으로 사용되는 Mockito를 사용하여 테스트를 진행할 수 있었지만 이 방식은 한계가 있다고 느꼈습니다. 외부 api를 사용할때는 http 요청과 응답, 응답값에 대한 역직렬화 과정 등이 발생하는데 Mockito는 단순히 목객체를 주입받아서 메서드를 호출하는 방식으로 동작하기 때문입니다... 2022. 11. 20.
FeignClient 적용기 서론 현재 진행하고 있는 식당 리뷰 sns 프로젝트에서 유저 로그인 기능의 구현을 담당하고 있다. 카카오 로그인을 구현하던 중, 카카오에서 제공하는 api에 Http 요청을 보내기 위해서는 클라이언트 객체를 사용해야했고 흔히 알고 있는 RestTemplate과 WebClient를 후보에 두고 고민하고 있었다. 그러던 중 쿠킴의 소개로 Feign Client의 존재를 알게 되었다. 💫 Feign Client란? Feign Client란 Netflix에서 개발한 Http Client다. (HttpClient는 Http 요청을 간편하게 만들어서 보낼 수 있도록 돕는 객체라고 생각하면 될것 같다.) 처음에는 Netflix에서 자체적으로 개발을 진행했지만 현재는 오픈소스로 전환했으며 SpringCloud 프레임워.. 2022. 11. 20.
OSIV란? 서론 이번 글은 IssueTracker 프로젝트를 진행하면서 겪었던 영속성 컨텍스트와 관련된 문제를 맞닥트리면서 알게 된 OSIV라는 개념을 정리해보기 위해 작성하게 되었다. 고민 : 미션을 진행하며 대부분의 api에서 유저의 정보가 필요할것이라고 판단했고, 매번 유저를 조회하는 코드의 중복을 제거하고 싶었다. 해결책 : jwt 토큰을 통해 받은 유저의 id를 사용해 인터셉터에서 미리 유저 객체를 조회한 뒤, ArgumentResolver 를 사용해서 해당 유저 객체를 컨트롤러에서 파라미터로 받아서 사용하기로 했다. 하지만 예상하지 못한 문제가 발생했다. 인터셉터에서 조회해서 컨트롤러에서 넘겨받은 유저 객체는 영속성 컨텍스트에서 관리해주지 않았다. 원인은 영속성 컨텍스트가 생성되는 시점이 우리가 등록한 .. 2022. 11. 20.
2022년 코드스쿼드 회고 백엔드 개발을 공부하기 위해 올해 1월 3일부터 코드스쿼드 백엔드 코스에 참여했고 7월 1일부로 끝이났다. 🤒코로나 이슈😷로 조금 늦은 회고를 작성해본다. 💩 코드스쿼드 이전 20년도 3월부터 8월까지 다른 부트캠프에서 6개월짜리 웹 풀스택 과정을 수강했고, 이때 개발을 제대로 접해보게 되었다. 시작할때까지만 하더라도 해당 과정이 끝나면 개발자로 취업할 준비가 되겠지라는 생각을 가지고 있었다. 자바스크립트를 시작으로 리액트, 노드를 배웠고 프로젝트까지 했지만 수료 후 스스로를 돌아보니 뭐 하나 제대로 알고 있는게 없었다. 또한 서버개발자를 생각하고 준비했지만, 내가 경험한 내용들은 프론트에서 사용되는 스택에 더 집중되어 있다고 생각되어서 프론트 개발자를 목표로 바꾸기로 결심하고 1년간 개인 공부를 진행했.. 2022. 11. 20.