gpt4 book ai didi

vue.js - 如何在使用 vue-test-utils 进行单元测试期间触发窗口事件

转载 作者:行者123 更新时间:2023-12-03 06:48:56 24 4
gpt4 key购买 nike

我添加了“attachToDocument”,但我仍然无法在窗口上触发 keyup 事件。

我的依赖项的版本:

"@vue/test-utils": "^1.0.0-beta.29"

"vue": "2.5.18"

<template lang="pug">
div
h1 123
</template>
<script>
export default {
mounted() {
window.addEventListener('keyup', this.handleKeyup)
},
beforeDestroy() {
window.removeEventListener('keyup', this.handleKeyup)
},
methods: {
handleKeyup() {}
}
}
</script>
import { mount } from '@vue/test-utils'
import test from '@/views/test.vue'

describe('just test', () => {
it('handle keyup', () => {
const wrapper = mount(test, {
attachToDocument: true
})
const handleKeyup = jest.fn()
wrapper.setMethods({ handleKeyup })
wrapper.trigger('keyup')
expect(handleKeyup).toHaveBeenCalled()
})
})

'handleKeyup' 应该被调用。

我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。

最佳答案

您在 mounted 中设置了事件监听器当你打电话时钩住wrapper.setMethods事件监听器已经设置为原始的空函数。还有 wrapper.trigger将在 Vue 实例上调度事件,但您在 window 上设置了事件监听器目的。尝试以下..

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

describe('just test', () => {
it('handle keyup', () => {
const handleKeyup = jest.fn()
const wrapper = mount(test, {
methods: { handleKeyup }
})
window.dispatchEvent(new Event('keyup'))
expect(handleKeyup).toHaveBeenCalled()
})
})

关于vue.js - 如何在使用 vue-test-utils 进行单元测试期间触发窗口事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738445/

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