Есть ли способ фактически запустить отправку формы, нажав на кнопку отправки в Vue Unit Test?
Давайте возьмем этот простой компонент:
<template>
<form @submit.prevent="$emit('submitEventTriggered')">
<button type="submit">Submit Form</button>
</form>
</template>
<script>
export default {}
</script>
Вы можетев качестве примера найдите похожий компонент здесь .
Я хочу проверить, что 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
фактически не нажимает кнопку.
Почему это так и есть лиспособ это исправить?