본문 바로가기

전체 글

(19)
스토리북 인터렉션 테스트는 왜 이렇게 잘 깨질까? 세줄 요약테스트를 한꺼번에 돌리면 깨진다.전체 테스트와 개별 테스트의 차이를 이해하고, 스토리 간 독립성을 보장했다.테스트결과가 파랗게 물들었다! 동기TDD를 도입했습니다. 그런데 전체 테스트를 돌리면 자꾸 깨져서 수시로 테스트를 돌릴 수가 없었습니다.그래서 문제가 발생시 빠르게 확인하는 이점을 얻을 수가 없었습니다. 저는 스토리북으로 UI를 만들고 컴포넌트 테스트를 작성합니다.그동안 개별 테스트를 통과시키고 컴포넌트 명세의 용도로 사용하고 있었는데, 사실 테스트 코드를 쓰는 본질은 그게 아니라고 생각합니다. 지금은 마치 맥북을 사놓고 인터넷과 유튜브만 하는 느낌이랄까요..?테스트 코드를 통해 기존 기능과 관련된 기능을 개발한다던지 수정한다던지 리팩토링을 진행할 때기존 테스트가 깨지지않는지 수시로 체크하..
React 개발자가 구글 oAuth를 이해하기 3년 전, NextAuth를 이용해서 구글 로그인을 처리한 적이 있습니다. 그 당시 oAuth를 이해했다고 생각했는데, 이번에 애플과 구글로그인을 클라이언트 사이드에서 구현하면서 어려움을 겪었습니다. 사실 NextAuth가 code 발급과 token, 그리고 JWT를 관리해 줘서 내부에서 어떤 일이 일어나는지 자세히 알지 못했습니다.서비스의 백엔드 서버에서 토큰을 발급받고, 모바일도 함께 처리하다보니 Access Token과 Refresh Token을 클라이언트에서 관리해야 했습니다. 이걸 어떻게 처리해야 할지 몰라 한동안 헤맸습니다. 이번 기회에 클라이언트에서 토큰을 활용한 로그인 관리와 구글 서버, 프론트엔드, 백엔드 각자의 역할과 토큰들을 정리해 보았습니다. oAuth 시스템이 잘 이해가지 않을 때..
다중 포인터 문제다중 포인터 - averagePairaveragePair라는 함수를 작성합니다. 정렬된 정수 배열과 목표 평균이 주어졌을 때, 배열에 쌍의 평균이 목표 평균과 같은 값의 쌍이 있는지 확인합니다. 목표 평균과 일치하는 쌍이 두 개 이상 있을 수 있습니다. 보너스 제약조건:Time: O(N)Space: O(1) 예시 인풋:averagePair([1,2,3],2.5) // trueaveragePair([1,3,3,5,6,7,10,12,19],8) // trueaveragePair([-1,0,3,4,5,6], 4.1) // falseaveragePair([],4) // false  문제 이해하기Q) 쌍의 평균이 목표 평균과 같은게 존재하는지 찾아내기input) [number], numberoutput) bo..