일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- returnType
- 리액트
- 티스토리꾸미기
- CSS
- NonNullable
- TSDoc
- 커스텀
- utilty type
- JS console
- reactjs
- 공통컴포넌트
- vue.js
- React.js
- click and drag
- typescript
- 성능최적화
- react
- 레이아웃쪼개기
- Chart.js
- 타입좁히기
- React Native
- 폰트적용하기
- 개발콘텐츠
- 제네릭
- 2022
- 누구나 자료구조와 알고리즘
- javascript
- 반복줄이기
- const 단언문
- 타입스크립트
- Today
- Total
몽땅뚝딱 개발자
모킹 모듈(mocking module) 사용하기 / axios-mock-adapter-path-params 본문
모킹 모듈(mocking module) 사용하기 / axios-mock-adapter-path-params
레오나르도 다빈츠 2022. 3. 25. 14:00
API가 다 만들어지기 전, 응답값 명세만 나온 상태에서 사용해보는 목업 API!
내가 직접 DB를 건드릴 수 없고 data 옵션에 하드코딩으로 넣어놓고 테스트하기에는 나중에 바꿀게 너무 많기때문에,
실제 api를 호출하면 목업 api에서 intercept하여 내가 원하는 데이터를 넣어 테스트 할 수 있어야했다.
팀장님이 이렇게 하라고 했지만 들을 당시에는 못 알아듣고..^^
나중에 다시 얘기하다가 모킹 모듈을 추천받고 사용해보게 되었다.
결론적으로는 덕분에 너무 편하게 개발했고 간과했던 문제점들을 매우 많이 찾을 수 있어서 시간을 아꼈다.
예제는 여기에 다 있으므로 따라하기만 하면 된다 :) 물론 난 따라하기만 해도 안됐음.
글로 정리하고보니 매우 간단해보이지만.. 적용하면서 힘들었다....
비둘기가 목으로 날아가게 만들어서 팀장님 보여드렸는데 날개로 날아갈 수 있게 만들어주셨다.
감사합니다...
◽ 설치하기
처음엔 [axios-mock-adapter]를 사용하다가, 그 모듈로는 파라미터까지 포함하여 테스트할 수가 없어서 [axios-mock-adapter-path-params]로 바꿔 사용했다.
npm i axios-mock-adapter --save-dev
npm i axios-mock-adapter-path-params --save-dev
◽ 데이터 구성하기
미리 목업 데이터들을 만들어두었고, 나중에 호출할 때 이 data들을 보내주면 된다.
[testData.js]
export const testData1 = [
{
userIdx: 0,
info: {
name: '레오나르도',
age: 13
}
},
{
userIdx: 1,
info: {
name: '다빈츠',
age: 53
}
}
]
export const testData2 = [
{
id: 0,
name: '이름'
},
{
id: 1,
name: '나이'
}
]
◽ mocking js 작성하기
호출부에서 API를 호출하면 모킹 모듈이 그 호출을 intercept하여 아래 데이터를 응답값으로 보내준다.
이렇게 개발하고 테스트하면 나중에 실제 API를 호출하고 테스트해야할 때 호출부를 수정할 필요 없이, interceptor하는 이 부분만 지우면돼서 매우 편리하다.
import axios from 'axios'
import {
testData1,
testData2,
} from '@/apis/testData.js'
const apiRequest = axios
import MockAdapter from 'axios-mock-adapter-path-params'
const mock = new MockAdapter(axios)
// 케이스 1. 파라미터가 없는 경우
// 200 뿐만 아니라 404, 500 에러까지 모두 목업으로 만들 수 있다.
mock.onGet('/info/test1').reply(200, testData1)
mock.onGet('/info/test1').reply(404, "error!")
// 케이스 2. 파라미터가 있는 경우
mock
.onGet('/info/test2', {
params: {
searchFrom: '2022-02-19',
searchTo: '2022-03-21',
},
})
.reply(200, testData2)
export default apiRequest
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'Development > Vue.js' 카테고리의 다른 글
[Vue.js] 비트(Vite)란? (작성 중) (0) | 2022.06.04 |
---|---|
[Vue.js] Vue3의 Composition API (0) | 2022.04.13 |
[Vue.js] mac에서 node 버전 변경 / nvm (0) | 2022.02.25 |
[Vue.js] filter 사용하기 (0) | 2022.02.20 |
[Vue.js] plugin으로 toast 만들기 (0) | 2022.02.19 |