我正在将我的项目从Vue 2转换为Vue 3,并将测试库转换为Vue test utils 2。以前,模拟方法像魔术一样工作:
export default {
methods: {
greet(text) {
sayHello('hello world')
},
sayHello(text) {
console.log(text)
}
}
}
test('should sample', async () => {
const spy = jest.spyOn(wrapper.vm, 'sayHello')
wrapper.vm.greet('hello world')
expect(spy).toHaveBeenCalledWith('hello world')
})
我试着把它转换成合成API:
export default defineComponent({
setup() {
function greet(text) {
sayHello(text)
}
function sayHello(text) {
console.log(text)
}
return {
greet,
sayHello
}
}
})
现在测试根本不起作用
expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: "hello world"
Number of calls: 0
如何模拟在Vue 3 + Vue测试工具2中调用其他函数的函数?
2条答案
按热度按时间jvlzgdj91#
您应该在创建 Package 器示例之前创建您的spy函数(此处使用
mount
或shallowMount
)。为了在以下情况下重置模拟,应该可以做到这一点。
izkcnapc2#
阅读此文章:https://github.com/vuejs/vue-test-utils/issues/1951#issuecomment-1019091217
lmiller1990说我们不可能修改值 设置内部。