碰壁幾天后,我了解到使用 vue-test-utils 測試功能組件會導致一些問題總而言之,我正在使用 Bootstrap-VueB-Button和一個@click調用一些函數/方法的事件。當我嘗試運行測試以了解是否調用了該方法時,測試失敗。但是,當我B-Button用 a交換功能時<button>,測試通過了。這是JobSearch.vue組件<template> <b-input-group> <b-form-input class="mr-2 rounded-0" placeholder="Enter Search term..." id="input-keyword" /><!-- <b-button--><!-- @click="searchJobs"--><!-- class="rounded-0 ml-2"--><!-- variant="primary"--><!-- id="reset-button"--><!-- >--><!-- Reset--><!-- </b-button>--> <button @click="resetFilter" class="rounded-0 ml-2" id="reset-button"> Reset </button> </b-input-group></template><script>export default { name: 'job-search-test', methods: { async searchJobs () { console.log('Calling Search Jobs from JobsSearchTest') }, resetFilter () { console.log('Clicked On Reset') } }, mounted () { // this.searchJobs() }}</script>這是 JobSearch.spec.jsimport { shallowMount, createLocalVue } from '@vue/test-utils'import BootstrapVue from 'bootstrap-vue'import JobSearchTest from '@/components/jobs/JobSearchTest'const localVue = createLocalVue()localVue.use(BootstrapVue)describe('JobsSearchTest.vue', () => { it('should call searchJobs method when component is mounted', () => { let searchJobs = jest.fn() shallowMount(JobSearchTest, { methods: { searchJobs }, localVue }) expect(searchJobs).toHaveBeenCalledTimes(1) }) it('should call resetFilter method on reset button click event', () => { let resetFilter = jest.fn() const wrapper = shallowMount(JobSearchTest, { methods: { resetFilter }, localVue }) })})但是,通過注釋掉該<b-button>部分并注釋<button>測試失敗,如果它可以通過就太好了,因為對于這個項目,我們希望使用 Bootstrap Vue。任何解決方法的想法都不會消除測試的價值?例如,根據我之前提出的一個問題,功能組件不能很好地與指令一起運行,因此通過使用非功能存根,指令可以正常工作,但是,這會帶走測試的價值。
測試功能組件內單擊事件的函數/方法調用
繁花不似錦
2021-10-14 14:13:39