JEST不会触发模拟功能Vue js

时间:2019-08-01 12:57:36

标签: unit-testing vue.js testing jestjs

我有一个简单的单元测试,如下所示。我正在尝试触发锚点上的click事件,但是由于错误,我认为它不会发生:

  

预期已调用模拟函数,但未调用。

组件:

<template>
<a @click="fetchAll" class="icon">
            <Icon class="icon"  scale="2" />
        </a>
</template>
<script>
export default {
   methods: {
       fetchAll() {}
   }
}
</script>

测试:

it('should fetch all', () => {
        const wrapper = shallowMount(Component, {
            stubs: [ 'Icon'],
            localVue
        })

        const fetchAll = jest.fn()
        wrapper.setMethods({ fetchAll })
        wrapper.find('.icon').trigger('click')
        expect(fetchAll).toBeCalled()
    })


What is wrong?

2 个答案:

答案 0 :(得分:0)

您的组件安装正确吗?尝试这样:

const fetchAllMock = jest.fn() wrapper.setMethods({ fetchAll: fetchAllMock })

答案 1 :(得分:0)

我遇到了同样的问题,在我的情况下,解决方法是在带有括号的模板中调用该方法,如下所示:

<a @click="fetchAll()" class="icon">

这听起来很奇怪,因为在所有文档和教程中,我都看到首选的语法没有括号(如果没有参数),但这是唯一可行的解​​决方案。