| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 세션
- Router
- webpack
- 뷰
- VUE
- vue.js
- cubic-bezier
- lazy loading
- 예외처리
- virtual dom
- vuetify
- Transition
- 렌더링 최적화
- 자바스크립트 #javascript #렌더링 #렌더링순서
- frontend
- 장고
- DOM
- 주니어 개발자
- 세션스토리지
- 라우터
- 프론트엔드
- Django
- NavigationDuplicated
- css
- 성능 최적화
- 로컬스토리지
- vue-router
- 안드로이드
- jest
- vue #vue.js #font #web-font
- Today
- Total
한준호
[Vue] jest에서 $vuetify.breakpoint 오류 본문
다음과 같은 태그를 갖는 컴포넌트에 대해 jest를 통해 유닛 테스트를 진행하려 한다.
<template>
<div v-if="$vuetify.breakpoint.moblile">
{{ msg }}
</div>
</template>
<script>
export default {
data() {
return {
msg: "Hello Jest~",
};
},
};
</script>
테스트 코드

v-if로 $vuetify.breakpoint.mobile이 사용되고 있는 컴포넌트에 대해 jest로 테스트를 진행하면 다음과 같이 에러가 발생한다.
대충 $vuetify의 mobile 인스턴스를 인식할 수 없다는 소리.

이유는 $vuetify인스턴스 변수는 mockable하지 않기 때문이다. 그래서오직 컴포넌트만이 shallowMount에 stubbed되는데, $vuetify.breakpoint는 Vue Test Utils에 stubbed되지 않기 때문에 다음과 같이 변경해준다.
쉽게 말하면 Vue.use(Vuetify)는 <v-col>과 같은 v태그들을 인식할 수 있도록 전역으로 import한다는 의미이고 $vuetify.breakpoint는 태그 안에서 v-if의 변수처럼 사용되기 때문에 태그가 아닌 "변수"의 영역이다. 따라서 shallowMount의 두번째 파라매터에 변수를 사용하는 형태로 위와 같이 작성을 해주어야 인식을 할 수 있게 된다.
지금 생각하면 당
*참고
shallowMount => child component는 무시. 오로지 컴포넌트 자신만 인식
mount => child component까지 인식(부모 컴포넌트의 변화가 자식에 주는 영향까지 파악할 수 있음)
shallowMount/mount(Foo, {propsData: {color: 'red'}}}) 와 같이 second parameter 가질 수 있음
coderethinked.com/shallowmount-vs-mount-in-vue-test-utils-with-an-example/
**추가 내용**
보통 Unit Test를 진행할 때 shallowMount를 쓴다고 한다.
어쨋건

이와 같이 vuetify를 새로 초기화한 후 shallowMount를 통해 wrapper에 등록하면 해결된다.
'Frontend > Vue js' 카테고리의 다른 글
| prototype을 이용하여 vue router 예외처리 전역으로 하기 (0) | 2021.09.11 |
|---|---|
| [Vue] audio player 사용 (0) | 2021.05.11 |
| [Vue] 컴포넌트 단위 테스트(jest) 활용 (0) | 2021.04.28 |
| [Vue] 트랜지션(transition) 이란? (0) | 2021.04.28 |
| 컴포넌트 사이즈를 동적으로 가져오기 (0) | 2021.04.08 |