Dalam ujian unit API gabungan Vue 3, didapati bahawa $route tidak ditakrifkan dalam cangkuk onMounted()
<p>Saya mempunyai <code>onMounted()</code> dalam fungsi <code>setup()</code> yang mengakses <code>$params</code> ; tetapi apabila saya mengejek objek <kod>$laluan</kod> <kod>undefined</code>, jadi ralat dilemparkan. Berikut ialah kodnya: </p>
<p><strong>Component.vue:</strong></p>
<pre class="brush:php;toolbar:false;"><template>
<div>{{ this.$route.params.id }}</div>
</template>
<skrip lang="ts">
import {defineComponent, onMounted} daripada 'vue'
import {useRoute} daripada "vue-router";
eksport lalai defineComponent({
nama: 'Komponen',
persediaan() {
laluan const = useRoute()
onMounted(() => {
console.log(route.params.id)
})
kembali {}
}
})
</script></pre>
<p><strong>component.spec.ts:</strong></p>
<pre class="brush:php;toolbar:false;">import {mount} daripada "@vue/test-utils";
import Komponen daripada "@/views/Bundle/Component.vue";
test('keterangan ujian', async () ==> {
const mockRoute = {
params: {
ID: 1
}
}
const mockRouter = {
tolak: jest.fn()
}
pembungkus const = lekapkan(Komponen, {
global: {
mengejek: {
$route: mockRoute,
$router: mockRouter
}
}
})
tunggu wrapper.find('button').trigger('click')
})</pre>
<p><strong>Ralat Lemparan: </strong>
<p>Saya menggunakan versi vue-test-utils 2.0.0-rc.12. </p>
<p>Sebarang bantuan amatlah dihargai</p>