Páginas

miércoles, 15 de abril de 2020

Cannot set property scrollHeight of [object Element] which has only a getter

Ok!, Ha pasado mucho tiempo desde el último posteo. Prometo en algún momento mejorar este blog y ponerme al día con un montón de cosas que estuve aprendiendo los últimos 2 años!!

Sin más, este post es específico por si en algún momento les pasa lo que dice el título:

Cannot set property scrollHeight of [object Element] which has only a getter

Me ocurrió intentando testear un componente que tenía en el código algo como:

let scrollHeight = this.$refs.content.scrollHeight

claro, en jdom scrollHeight de un elemento del DOM es 0, entonces lo lógico es setearlo en el test. De ahí que no se puede porque esa propiedad en jdom solo tiene un getter.

Lo que tenemos que hacer es guardar una variable local en el test para la referencia del objeto y redefinir la propiedad agregando un setter. Así:

let localHeight = 0
Object.defineProperty(wrapper.vm.$refs.content, 'scrollHeight', {
get: function () {
return localHeight;
},
set: function (value) {
localHeight = value;
}
});
wrapper.vm.$refs.content.scrollHeight = '200px'

Espero haberlos ayudado.

Chauuu