Claro, porque el resolve() no recibe un callback por parametros, en cuyo caso no deberiamos usar los parentesis
resolve(store.list)
El resolve() recibe por parametros la informacion (la respuesta) por eso necesitamos usar los parentesis
resolve(store.list())
Este curso es tan bueno que parece serie de película. Tipo "en el próximo capítulo descubrirás por qué, no te lo pierdas".
Excelente profesor Carlos!!!
Lo que yo entiendo de MOCKS es que es un objeto que simula o imita el comportamiento de uno real con el fin de poder hacer testing sin la necesidad de tener una capa compleja de base de datos.
Es algo similar
Hola Devs:
-Aca les traigo mi solucion hacinendo uso de TypeScript:
Capa de Network del componente Message:
Capa de Controller del componente Message:
Capa del Store del componente Message:
-Aca tienen el commit exacto de esta clase, recuerden que pueden enviar un PR si ven alguna mejora: Click Aqui
-Recuerda, #NuncaParesDeAprender 💚
No es más facil usar async await y el codigo queda más simple? Digo osea, queda entendible y facil de mantener segun yo
Se podría, pero funciona en menos navegadores y probablemente tocaría usar babel.
@juanjosevega, esto no esta pensado para que funcione en un navegaodor, todo lo que hemos hecho esta corriendo en un servidor ^^
Yo estoy pasando todo el codigo a async/await y con arrow functions, aqui se los dejo
No sienten que el profe como que se lo goza. Como que le mete misterio y emoción cuando acaba y nos introduce a la clase siguiente. Ya casi llegamos a la clase 20 y no se siente. Que increíble profesor
Está bien hecho poner un ++try/catch++ en la función addMessage() del controller.js:
`const store = require('./store');
function addMessage(user, message) {
return new Promise( (resolve, reject) => {
if(!user || !message){
console.error('[errorController], no hay usuario o mensaje.');
return reject('Los datos son incorrectos.');
}
O no hace falta el manejo de excepciones dentro de otro?...
Gracias.
No lo veo mal agregar el try catch para controlar el action del store lo que cambiaría en este caso es en ves de realizar un return de e, lo que haría sería realizar un return reject(e). Entonces network lo controla en el catch del promise. Saludos.
Si es posible , mira yo lo hice asi :
const store =require("../store/store");constaddMessage=(user, content)=>{const fullMessage ={user: user,content: content,date:newDate(),};returnnewPromise((resolve, reject)=>{try{ store.add(fullMessage);returnresolve(fullMessage);}catch(err){if(!user ||!content){console.error(`[${err.message}] No hay usuario o contenido`);returnreject(`Los datos son incorrectos`);}}});};constgetMessages=()=>{returnnewPromise((resolve, reject)=>{try{resolve(store.list());}catch(err){console.error(`[${err.message}] No hay lista de mensajes`);returnreject(`Los datos no se han encontrado`);}});};module.exports={ addMessage, getMessages,};
Qué locura, es hermoso el backend, aunque me toca ver las clases varias veces (;
En lo que llevo visto del curso no se utiliza el paradigma de programacion orientada a objetos(clases, constructores, objetos interfaces etc. ) esto tiene alguna ventaja en node ? es una mejor manera de hacer las cosas?. Gracias de antemano por responder
en javascript y node es muy común utilizar la programación funcional averigua sobre ese tema es muy interesante
ok muchas gracias, en serio por la respuesta
Un Mock es un intento de simular algo o una burla, si queremos una traducción más exacta.
Son muy usados en las pruebas unitarias para simular la interacción con la DB y así mantener las pruebas en el ambiente controlado de nuestro sistema - la interacción de distintos sistemas, ya sería una prueba de integración -
Por ejemplo, si el desarrollador del FrontEnd de nuestro Telegram, necesitará un Mock de la REST API que estamos creando en este curso, podría utilizar el paquete JSON Server.
Creamos un nuevo archivo store.js dentro la carpeta message que contendrá un mock con la simulación a una base de datos y lo exportamos como un modulo
components/message/store.js:
const list =[]functionaddMessage(message){ list.push(message)}functiongetMessages(){return list
}module.exports={add: addMessage,list: getMessages,}
procedemos a importar el modulo store dentro del controller del componente message y hacer uso de el para añadir un mensaje, al igual que tenemos la función para añadir un mensaje en el controller, creamos una nueva función asíncrona para poder obtener los mensajes
components/message/controller.js:
luego procedemos a modificar el GET del network del componente message, importando y ejecutando la función creada en el controller para obtener los mensajes y modificando la lógica de tal manera que todo funcione correctamente y pasemos la lista de mensajes
components/message/network.js:
si hacemos una petición con el método GET a URL "/message", el servidor nos responderá de esta forma:
{"error":"","body":[]}
vemos una lista vacía, si queremos añadir mensajes podemos hacer una petición con el método POST a la url "/message" con el cuerpo del body
{"user":"Juan","message":"Mensaje Uno"}
y luego hacemos lo mismo pero cambiamos el contenido del mensaje
{"user":"Juan","message":"Mensaje Dos"}
estaríamos añadiendo 2 nuevos mensajes a la lista, si hacemos una petición con el método GET a la url "/message" nuevamente como al principio, esta ves el servidor nos responderá diferente y veremos: