gpt4 book ai didi

vue.js - Sinon spy 如何在调用事件回调时将 Vue 组件方法注册为已调用?

转载 作者:行者123 更新时间:2023-12-05 07:23:35 24 4
gpt4 key购买 nike

我的 vue 组件中有一个名为 testfn 的方法,每当事件 testevt 触发时都会调用该方法。此方法包含对 console.log 的调用,清楚地显示正在调用该方法。

使用 vue-test-utils 运行测试时,如果我为该方法创建一个 Sinon spy 并直接调用该方法,该 spy 会正确检测到调用了该方法:

const wrapper = mount(MyComponent, {});
var spy = sinon.spy(wrapper.vm, 'testfn');
wrapper.vm.testfn();
expect(spy.called).to.be.true; //(uses the Chai assertion library)

这不会引发错误。但是,如果我创建相同的 spy ,但不是直接调用该方法,而是发出调用我的方法的事件,该方法被调用(我可以看到这一点,因为该方法包含对 console.log 的调用)但是 spy 确实不注册该方法被调用。因此,以下给出了一个错误:

const wrapper = mount(MyComponent, {});
var spy = sinon.spy(wrapper.vm, 'testfn');
wrapper.vm.$emit('testevt');
expect(spy.called).to.be.true; //(uses the Chai assertion library)

似乎正在发生的事情是 testfn 本身没有被调用,而是调用了它的一个克隆。无论如何,在我发出 testevt 事件后,我如何使用 sinon spy 来检测是否调用了 testfn 或其克隆?

最佳答案

我今天尝试像那样进行 spy 事件但没有成功,所以我切换到:

const spy = sinon.spy()
const wrapper = shallowMount(MyComponent, {localVue, methods: {clicked: spy}})
wrapper.get('button').trigger('click')
expect(spy).to.have.been.calledOnce

希望有人能找到真正的答案 - 但在那之前这是有效的。

关于vue.js - Sinon spy 如何在调用事件回调时将 Vue 组件方法注册为已调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55905201/

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