У меня есть два компонента. Дочерний компонент генерирует событие 'input', когда его значение изменяется, и родительский компонент принимает это значение с помощью v-модели. Я тестирую ChildComponent. Мне нужно написать тест с Vue -test-utils, чтобы убедиться, что он работает.
ParentComponent. vue:
<template>
<div>
<child-component v-model="search"></child-component>
<other-component></other-component>
...
</div>
</template>
ChildComponent. vue:
<template>
<input :value="value" @change="notifyChange($event.target.value)"></input>
</template>
<script lang="ts">
import { Component, Prop, Vue } from 'vue-property-decorator'
@Component
export default class ChildComponent extends Vue {
@Prop({ default: '' }) readonly value!: string
notifyChange(value: string) {
this.$emit('input', value)
}
}
</script>
child-component.spe c .ts:
describe('ChildComponent', () => {
let wrapper: any
before(() => {
wrapper = VueTestUtils.shallowMount(ChildComponent, {})
})
it(`Should emit 'input' event when value change`, () => {
const rootWrapper = VueTestUtils.shallowMount(ParentComponent)
wrapper.vm.value = 'Value'
wrapper.findAll('input').at(0).trigger('change')
assert.isTrue(!!rootWrapper.vm.search)
})
})
Я не написал точно такой же код, но logi c похож на это. Мои компоненты работают правильно. 'child-component.spe c .ts' не работает. Мне нужно написать тест для этого.