gpt4 book ai didi

javascript - 测试功能组件内单击事件的函数/方法调用

转载 作者:行者123 更新时间:2023-12-02 22:57:47 24 4
gpt4 key购买 nike

经过几天的碰壁之后,我了解到使用 vue-test-utils 测试功能组件会导致一些问题

总而言之,我正在使用 Bootstrap-Vue 的 B-Button@click其上调用某些函数/方法的事件。当我尝试运行测试来了解是否调用该方法时,测试失败。但是,当我交换功能 B-Button 时与 <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.js

import { 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
})
expect(resetFilter).not.toHaveBeenCalled()
wrapper.find('#reset-button').trigger('click')
console.log(wrapper.find('#reset-button'))
expect(resetFilter).toHaveBeenCalled()
})
})

通过注释掉 <b-button>部分并评论 <button>测试失败了,但是,如果能通过就好了,因为对于这个项目,我们希望使用 Bootstrap Vue。

有什么解决办法,不会剥夺测试的值(value)吗?例如,根据我之前提出的问题,功能组件不能很好地与指令一起运行,因此通过使用非功能 stub ,指令可以正常工作,但是,这会带走测试的值(value)。

Use more than one directive to add data attributes to components

最佳答案

据我了解,这个问题有两个答案。

当使用shallowMount时,应在创建包装器时对功能组件进行 stub 处理。

另一个解决方案是使用mount。仅当仅对组件进行隔离测试时,浅安装实际上才有效。在这里我正在测试子组件...并且由于 b-button 是子组件...我需要将其引入

关于javascript - 测试功能组件内单击事件的函数/方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57907756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com