СИТУАЦИЯ
Я пытаюсь shallowMount
компонент, безуспешно.
Компонент использует $refs
для считывания высоты div
. Это значение читается внутри вычисляемого свойства. Затем в жизненном цикле mounted
я сохраняю это значение в магазине.
Сам logi c прост и работает нормально. Но в тестовом наборе, монтирование компонента не работает, потому что ключ $refs
равен undefined
.
Для ясности: я не собираюсь тестировать $refs
, Мне просто нужно смонтировать компонент и продолжить выполнение реального юнит-тестирования.
КОМПОНЕНТ
Это разметка:
<div ref="tgmp">
Я сохраняю высоту div в вычисляемом свойстве:
computed: {
barH() {
return this.$refs.tgmp.clientHeight
}
}
И затем, в смонтированном жизненном цикле, я фиксирую значение в хранилище:
this.$store.commit('setBarHeight', this.barH)
ТЕСТ
Это тест. Я пропустил ненужные вещи, такие как установка магазина в местном Vue.
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
жизненный цикл?