СИТУАЦИЯ
Я пытаюсь shallowMount
использовать компонент, но безуспешно.
Компонент использует $refs
для чтения высоты div
. Это значение считывается внутри вычисляемого свойства. Затем в жизненном цикле mounted
я сохраняю это значение в магазине.
Сама логика проста и работает нормально. Но в наборе тестов установка компонента прерывается, потому что ключ $refs
равен undefined
.
Для ясности: я не собираюсь тестировать $refs
, мне просто нужно смонтировать компонент и перейти к фактическому модульному тестированию.
КОМПОНЕНТ
Это разметка:
<div ref="tgmp">
Я сохраняю высоту div в вычисляемом свойстве:
computed: {
barH() {
return this.$refs.tgmp.clientHeight
}
}
А затем, в смонтированном жизненном цикле, я фиксирую значение в магазине:
this.$store.commit('setBarHeight', this.barH)
ТЕСТ
Это тест. Я пропустил ненужные вещи, например, установку магазина в localVue.
beforeEach(() => {
wrapper = shallowMount(Bar, {
store,
})
})
test('is a Vue instance', () => {
expect(wrapper.isVueInstance()).toBeTruthy()
})
ОШИБКА
Error in mounted hook: "TypeError: Cannot read property 'clientHeight' of undefined"
ПОПЫТКА
Я где-то пытался найти решение, но не нашел. Я пытался издеваться над $ refs, но безуспешно:
wrapper = shallowMount(ThePlayerBar, {
store,
mocks: {
$refs: {
tgmp: {
clientHeight: 600
}
}
}
})
ВОПРОС
Как я могу смонтировать компонент, который делает нас $refs
в mounted
жизненном цикле?
mount
с конкретными заглушками или смоделировать computed. - person Estus Flask   schedule 15.04.2020<div ref="tgmp">
не существует, когда вы его визуализируете, возможно, если он является дочерним элементом другого компонента или затронут директивой. - person Estus Flask   schedule 15.04.2020