Я пишу несколько тестов, используя vue-test-util
для компонента, который я сделал. Я свел свой код к актуальной проблеме.
Компонент имеет вид:
<template>
<inner-component>
</template>
<script>
export default {
name: 'MyList'
}
</script>
, и мой внутренний компонент выглядит примерно так:
<template>
<div v-if="open">Some stuff</div>
</template>
<script>
export default {
name: 'InnerComponent',
props: {
open: false,
}
}
</script>
Теперь тест, который я пишу, проверяет наличие div
в inner-component
, когда для open
установлено значение true
, но по умолчанию установлено false
. Мне нужен способ установить реквизит этого дочернего компонента перед его тестированием.
Мой тест:
import { createLocalVue, mount } from '@vue/test-utils'
import MyList from '@/components/MyList.vue'
describe('My Test', () => {
const localVue = createLocalVue()
const wrapper = mount(MyList)
it('Tests', () => {
// need to set the prop here
expect(wrapper.find('div').exists()).toBeTruthy()
}
}
Я могу использовать:
wrapper.vm.$children[0].$options.propsData.open = true
Что делаетПохоже, что я установил реквизит, но мои тесты все еще приходят как ложные.
Я могу изменить компонент так, чтобы по умолчанию было установлено значение true, а затем мои тесты прошли, поэтому я не думаю, что я проверяю.
Если кто-то может определить, почему это не работает, или знает, как лучше это сделать, пожалуйста, дайте мне знать!