MirageJS 서버 설정
서버 없이도 테스트를 진행할 수 있도록 MirageJS를 활용하기로 했다.
- tsconfig.json 설정
compilerOptions → lib에 "DOM"을 추가해준다.
이걸 추가하지 않으면 window를 찾을 수 없다는 에러가 발생한다.
{ "compilerOptions": { "lib": ["es2017", "DOM"], ... } }
- server type 만들기
window 안에 server에 대한 타입을 만들어두지 않으면 server를 찾을 수 없다는 에러가 발생한다.
declare global { interface Window { server: any; } }
- MirageJS 서버를 만드는 함수
export const setupServer = () => { if (window.server) { window.server.shutdown() } window.server = createServer({ routes() { this.get(URLS.unboxing_api, () => { return { text: 'hello world!' } }) } }) }
- App.tsx 상단에서 호출
setupServer() const App = () => { .. }
- MIrage 서버 테스트
fetch(URLS.unboxing_api) .then(result => console.log(result))
콘솔에 'hello world!'가 출력된다!!
로그인 건너뛰기
앱에 로그인한 유저만 커스텀박스를 만들 수 있도록 설정되어있다.
언박싱 몬스터는 로그인 방식으로 소셜 로그인만 제공하기 때문에 서버 없이는 로그인이 안된다.
코드에서 로그인 여부를 AsyncStorage에 access token이 저장되어 있는지로 확인하고 있으니, 처음 앱을 시작할 때 AsyncStorage access token에 임의의 값을 set 해줌으로써 로그인을 건너뛴다.
- 테스트용 로그인 함수 만들기
export const login = () => { setAccessTokenToAsyncStorage('access token') }
- App.tsx 상단에서 호출
setupServer() login() const App = () => { .. }
커스텀 박스 제작 페이지 진입 완료!!
아이템 데이터 넣기
현재 상품 아이템 데이터를 엑셀 파일에 가지고 있다.
- 먼저, 엑셀을 CSV파일로, CSV를 JSON 형태로 변환한다.
- JSON 형태의 아이템 데이터를 Array로 저장한다.
export const ITEMS = [ { "id": 0, "productId": 1234, "seller": 1, "title": "킨더 부에노", "price": 1500, "image": "image.address.com", "detail": "디테일" }, .... ]
- Mirage 서버에 routes를 추가한다.
아이템 데이터 불러오기 성공!!window.server = createServer({ routes() { this.get(URLS.unboxing_api + 'item', () => { return ITEMS }) } })
'PROJECTS' 카테고리의 다른 글
Redux 기본 용어 (0) | 2022.02.05 |
---|