March 01, 2021
redux-thunk
사용하여 비동기 액션 실행하기redux-mock-store
를 사요하여redux-thunk
테스트하기api
호출 함수 테스트 코드 작성하기reducer
를 if
나 switch
를 사용하지 않고 lookup table pattern
을 이용해 구현하기given2
라이브러리 사용하여 테스트코드에서 반복되는 부분 리팩토링하기api
를 어떻게 요청해야하는지를 확실하게 알고 사용해야겠다. 무작정 가져다 쓰다보니 잘못된 방법으로 요청해서 코드를 싹 바꿨다..api
요청은 프론트에 관심사가 아니므로 mocking
해주면 된다는 것을 알게되어 너무 행복했다. 데드라인의 중요성..given2
를 자주 사용해야겠다. 중복되는 코드를 없애주니 너무 좋다.TDD
를 접했을때는 손도 대지 못하는 상황이라 울고싶었는데.. 지금은 그래도 손은 대는거같아.. 조금 뿌듯하다.. 아직 갈길이 멀지만 ㅎㅎㅎ 지금보다 더더 TDD
에 익숙해지는 내가 되었으면 좋겠다.E2E
로 커버하자API
를 프론트에서 테스트할 필요는 없다. API
함수는 mocking
하고 action
이 잘 실행되는지에 관심을 가져야한다redux thunk middleware
는 Action creator
가 액션을 반환하는 대신에 함수를 반환한다. 첫번째 파라미터로는 dispatch
를 받고 두번째 파라미터로는 getState
를 받게되는데 getState
를 이용해 현재 상태를 가져올 수 있다.redux thunk
를 사용하려면 스토어를 만들때 두번째 인자로 미들웨어에 등록해야한다.=> createStore(reducer, applyMiddleware(thunk));
given2
를 사용하면 테스트코드 작성시 반복되는 부분을 줄일 수 있다.fetch
함수를 mocking
하는 방법(global.fetch
조작, fetch-mock
사용)redux-thunk
테스트하는 방법 => https://github.com/reduxjs/redux-mock-storeuseEffect
에서 여러개의 dispatch
를 실행시켜야할 경우 dispatch
의 실행 횟수를 테스트하게되는데 dispatch
가 추가될때마다 횟수를 변경해줘야하므로 여러개의 dispatch
를 하나의 dispatch
로 처리 가능하도록 하나로 묶어주자jest
의 mockResvoledValue
함수를 이용해 mocking
한 비동기 함수의 반환값을 조작해줄 수 있다.Flux
아키텍처를 중심으로 UI
와 상태관리 로직을 완전히 분리하자, Redux
를 앱 본체라 생각하고 React
를 Redux
에 딸린 덤이라고 생각하면 훨씬 좋은 프로그램이 될것이다.