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에 딸린 덤이라고 생각하면 훨씬 좋은 프로그램이 될것이다.