测试方法是否被 Vue 中的事件调用

Testing if the method was called for an event in Vue

我一直在尝试编写一个测试来检查是否在 Vue 中的标记事件上调用了函数。我有这个组件(有点总结)

<multiselect @tag="fn"></multiselect>

import Multiselect from 'vue-multiselect'
export default {
    components: {
        Multiselect
    },
    name: "TagMultiselect",
    methods: {
        fn(){
            console.log("test");
        }
    }
}

我正在尝试测试函数 fn 是否被调用。为此,我编写了以下测试

it('triggers the function', () => {
        const wrapper = shallowMount(TagMultiselect);
        const spy = jest.spyOn(TagMultiselect.methods, 'fn');
        const multiselect = wrapper.findComponent(Multiselect);
        multiselect.vm.$emit('tag');
        expect(spy).toBeCalledTimes(1)
    })

但每次我得到

接听电话数:0

我做错了什么?

你需要像这样监视你的组件的方法 常量间谍 = jest.spyOn(wrapper.vm, 'fn');