gpt4 book ai didi

vue.js - 无法在 Vue 3 setup() 中监视函数

转载 作者:行者123 更新时间:2023-12-03 22:40:18 24 4
gpt4 key购买 nike

如何使用调用 resetTimer 的 Jest 编写测试并检查 startTimer也被调用?
代码:

setup () {
const startTimer = () => {
// ...
};

const resetTimer = () => {
startTimer();
};

return {
startTimer,
resetTimer
}
测试:
import { shallowMount } from '@vue/test-utils';
import Overlay from '@/components/Overlay.vue';

const wrapper = shallowMount(Overlay);

it('resetTimer should call startTimer', () => {
const spy = jest.spyOn(wrapper.vm, 'resetTimer');

wrapper.vm.startTimer();
expect(spy).toHaveBeenCalled();
});
结果:
TypeError: object.hasOwnProperty is not a function

187 |
188 | it('resetTimer should call startTimer', () => {
> 189 | const spy = jest.spyOn(wrapper.vm, 'resetTimer');
| ^
190 | wrapper.vm.startTimer();
191 | expect(spy).toHaveBeenCalled();
192 | });
谢谢!

最佳答案

找到了一个临时解决方案,不是最好的,但至少可以让您检查是否调用了它的函数。

import { mount } from '@vue/test-utils';
import Component from './Component.vue';

describe('Component', () => {
it('should call foo', () => {
Component.created = function () {
this.foo = jest.fn(this.foo);
};
const component = mount(Component);
component.find('div').trigger('click');
component.vm.foo();
expect(component.vm.foo).toHaveBeenCalled();
delete Component.created;
});
});

关于vue.js - 无法在 Vue 3 setup() 中监视函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64544061/

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