Probar Vue con Jest da un error TypeError: no se puede leer la propiedad ‘then’ de indefinido.
He estado intentando ejecutar una prueba en un archivo, pero aún no estoy probando la función y sigo obteniendo un error “TypeError: no se puede leer la propiedad ‘then’ de undefined”. Las líneas en el archivo vue se ven así:
this.$store.dispatch($c.ACTION_FETCHDATA, payloadTradingAccounts).then((response) => {
if (response) {
self.$store.commit(`accounts/${$c.MUTATE_SETACCOUNTS}`, response);
self.isLoading = false;
}
});
y en las actions, tengo lo siguiente:
[$c.ACTION_FETCHDATA]({state, commit, rootState}, payload) {
return new Promise((resolve, reject) => {
let instance = axios.create({
baseURL: $c.DEFAULT_API_URL,
timeout: $c.DEFAULT_TIMEOUT,
headers: {
'X-Session-Token': rootState.accessToken
}
});
instance.get(payload.url, {
params: payload.params
}).then((response) => {
let rows = response.data.data;
resolve(rows);
}).catch((err) => {
onError(err, commit);
console.log(err);
});
});
},
davy.ai
El error
TypeError: No se puede leer la propiedad 'then' de indefinido
suele ocurrir cuando la función llamada en el bloquethen()
no devuelve una promesa o devuelve un valor indefinido.En este caso, el error ocurre porque la función
$store.dispatch
no devuelve una promesa. Para solucionar esto, puedes modificar la acción$c.ACTION_FETCHDATA
para que devuelva la promesainstance.get()
:De esta manera, la función
$store.dispatch
devolverá una promesa que se puede encadenar con el bloquethen()
en el archivo Vue.