Vue 3의 통합 API 유닛 테스트에서 onMounted() 후크에 $route가 정의되지 않은 것으로 나타났습니다.
<p>내 구성 요소의 <code>setup()</code> 함수에 <code>$route</code>에 액세스하는 <code>onMounted()</code> 후크가 있습니다. ; 속성이지만 테스트에서 <code>$route</code> 객체를 모의하면 <code>onMounted()</code> <code>정의되지 않음</code>이므로 오류가 발생합니다. 코드는 다음과 같습니다. </p>
<p><strong>Component.vue:</strong></p>
<pre class="brush:php;toolbar:false;"><템플릿>
<div>{{ this.$route.params.id }}</div>
</템플릿>
<스크립트 lang="ts">
'vue'에서 {defineComponent, onMounted} 가져오기
"vue-router"에서 {useRoute}를 가져옵니다.
기본 정의 내보내기({
이름: '구성요소',
설정() {
const 경로 = useRoute()
onMounted(() => {
console.log(route.params.id)
})
반품 {}
}
})
<p><strong>comComponent.spec.ts:</strong></p>
<pre class="brush:php;toolbar:false;">"@vue/test-utils"에서 {mount} 가져오기;
"@/views/Bundle/Component.vue"에서 구성 요소를 가져옵니다.
test('테스트 설명', async () => {
const mockRoute = {
매개변수: {
아이디: 1
}
}
const mockRouter = {
푸시: jest.fn()
}
const 래퍼 = 마운트(구성 요소, {
글로벌: {
조롱: {
$route: mockRoute,
$router: mockRouter
}
}
})
Wrapper.find('버튼').trigger('클릭')을 기다립니다.
})</pre>
<p><strong>오류 발생: </strong> TypeError: 정의되지 않은 'params' 속성을 읽을 수 없습니다</p>
<p>저는 vue-test-utils 버전 2.0.0-rc.12를 사용하고 있습니다. </p>
<p>어떤 도움이라도 주시면 감사하겠습니다</p>