【发布时间】:2018-11-19 20:34:29
【问题描述】:
有没有办法通过点击 Vue 单元测试中的提交按钮来实际触发表单的提交?
让我们来看看这个简单的组件:
<template>
<form @submit.prevent="$emit('submitEventTriggered')">
<button type="submit">Submit Form</button>
</form>
</template>
<script>
export default {}
</script>
您可以找到类似的组件作为示例here。
我想测试在单击按钮时会触发submit.prevent,因此会发出submitEventTriggered。当我在浏览器中运行它时,一切都按预期工作,但以下测试失败:
import {shallowMount} from '@vue/test-utils'
import {assert} from 'chai'
import Form from '@/components/Form.vue'
describe.only('Form', () => {
it('button click triggers submit event', () => {
const wrapper = shallowMount(Form)
wrapper.find('[type=\'submit\']').trigger('click')
assert.exists(wrapper.emitted('submitEventTriggered'), 'Form submit not triggered')
})
})
有了这个输出:
AssertionError: Form submit not triggered: expected undefined to exist
如果我将操作更改为直接在表单上触发submit.prevent,一切正常,但实际上没有通过按钮提交的测试覆盖率。
wrapper.find('form').trigger('submit.prevent')
看起来trigger 函数实际上并没有点击按钮。
为什么会这样?有办法解决吗?
【问题讨论】:
-
这在我看来像是一个错误。我在这里举报了:github.com/vuejs/vue-test-utils/issues/1030
-
想知道为什么/谁不赞成你
-
有同样的问题 - 对 github 问题发表评论 - 希望它可以解决。
标签: vue.js vue-test-utils