Tu primera experiencia con Node.js

1

驴D贸nde aprender backend con Node.js actualizado?

2

Todo lo que aprender谩s sobre backend con Node.js

3

驴Qu茅 es Node.js?

4

驴Qu茅 es Node.js y para qu茅 sirve?

5

Diferencias entre Node.js y JavaScript

6

Resumen: Diferencias Nodejs y Javascript

7

Instalaci贸n de Node.js

8

Arquitectura orientada a eventos

9

Node.js para la web

Manejo y uso de Streams con Node.js

10

Introducci贸n a streams

11

Readable y Writable streams

12

Duplex y Transforms streams

Uso de utilidades de Node.js

13

Sistema operativo y sistema de archivos

14

Administrar directorios y archivos

15

Consola, utilidades y debugging

16

Clusters y procesos hijos

Crea tu primer proyecto en Express.js

17

驴Qu茅 es Express.js y para qu茅 sirve?

18

Creando tu primer servidor con Express.js

19

Request y Response Objects

Aprende a crear un API con REST

20

Anatom铆a de una API Restful

21

Estructura de una pel铆cula con Moockaru

22

Implementando un CRUD en Express.js

23

M茅todos idempotentes del CRUD

24

Implementando una capa de servicios

C贸mo conectarse con librer铆as externas en Express.js

25

Creaci贸n de una BD en MongoAtlas

26

Conexi贸n a MongoAtlas una instancia de MongoDB

27

Conexi贸n con Robot3T y MongoDB Compass a una BD

28

Implementaci贸n de las acciones de MongoDB

29

Conexi贸n de nuestros servicios con MongoDB

Conoce como funcionan los Middleware en Express.js

30

驴Qu茅 es un middleware? Capa de manejo de errores usando un middleware

31

Manejo de errores as铆ncronos y s铆ncronos en Express

32

Capa de validaci贸n de datos usando un middleware

33

驴Qu茅 es Joi y Boom?

34

Implementando Boom

35

Implementando Joi

36

Probar la validaci贸n de nuestros endpoints

37

Middlewares populares en Express.js

Implementa tests en Node.js

38

Creaci贸n de tests para nuestros endpoints

39

Creaci贸n de tests para nuestros servicios

40

Creaci贸n de tests para nuestras utilidades

41

Agregando un comando para coverage

42

Debugging e inspect

Despliega tu primera aplicaci贸n en Express.js

43

Considerando las mejores pr谩cticas para el despliegue

44

Variables de entorno, CORS y HTTPS

45

驴C贸mo implementar una capa de manejo de cach茅?

46

驴C贸mo contener tu aplicaci贸n en Docker?

47

Despliegue en Now

Conclusiones

48

驴Qu茅 aprendiste en este curso?

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Agregando un comando para coverage

41/48
Recursos

Aportes 44

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Si recibes este error:

sh: 1: open: not found

En Ubuntu se debe remplazar el comando OPEN que se usa en MAC OS.

"nyc report --reporter=html &&  open coverage/index.html"

Por el comando xdg-open que se usa en Linux.

"nyc report --reporter=html &&  xdg-open coverage/index.html"

En Windows con WSL2 (Ubuntu 20.04) ten铆a el siguiente error con el comando npm run report:

sh: 1: open: not found

Para ello la soluci贸n fue usar wslview en lugar de open:

"report": "nyc report --reporter=html && wslview coverage/index.html"

si no te funciona el comando 鈥渞eport鈥 en windows usa el siguiente

"report": "nyc report --reporter=html &&  cd coverage && index.html"

Alguien m谩s tuvo este error:
鈥渙pen鈥 no se reconoce como un comando interno o externo鈥

82.44% de test.
Repositorio personal

No logre testear el catch de las rutas por eso no logre un 100% de statements de estas y a煤n falta el test de los middlewares

Que interesante toda la parte de coverage, sin duda, buenas pr谩cticas para aplicarlas en proyectos futuros.

Para los que est谩n en linux pueden usar xdg-open en lugar de open, de la siguiente forma:

"report": "nyc report --reporter=html && xdg-open coverage/index.html"

Que gran herramienta!!!

Aumentando coverage a un 71.43%

Esa grafica de cobertura solo me dar谩 estr茅s el no llegar al 100% no podr铆a dejarlo :S

Por si a alguien le sirve la informaci贸n, en windows el comando open es start en la cmd asi que use:

"report": "nyc report --reporter=html && start coverage/index.html"

Y me funciono bien

Para las personas que tienen Windows, este es el script que me sirvio:

"report": "nyc --reporter=lcov --reporter=text npm run test & start coverage/lcov-report/index.html"

Y estos son todos los scripts que tengo:

"scripts": {
    "dev": "set DEBUG=app:* & set NODE_ENV=devolepment & nodemon index",
    "start": "set NODE_ENV=production & node index",
    "test": "set NODE_ENV=devolepment & mocha --exit",
    "cover": "nyc npm run test",
    "report": "nyc --reporter=lcov --reporter=text npm run test & start coverage/lcov-report/index.html"
  },

Espero que les sea de utilidad

este coverage funciona con otros lenguajes?

hacer pruebas automatizadas permite agilizar el desarrollo鈥 y cumplir con los tiempos de entregas establecidos鈥

muy buena

Los test sirven para certificar la calidad del producto, tambi茅n.

que genial esto!

  • Comando de covarage, nos permite identificar donde estamos fallando y como lo podemos corregir.
npm i -D nyc
"scripts":{
	...
	"cover": "nyc npm run test"
	"report": "nyc report --reporter=html && open coverage/index.html"
}
...
"nyc": {
	"all": true
	"include": ["route", "services","lib","utils"]
}

Para los alumnos que est茅n utilizando el CMD de windows y reciban el siguiente error:
鈥榦pen鈥 is not recognized as an internal or external command

deben reemplazar el comando open por el comando start en su script de report. Quedar铆a as铆:

"report": "nyc report --reporter=html &&  start coverage/index.html"

Este curso es ORO!! 鉂わ笍

Para testear el catch lo que hice fue comentar la linea del await para que no diera la respuesta, porque solo dejando el throw new error, no llegaba hasta el status, no se si alguien me explica como hacer un test correcto para ambos casos (respuesta y catch)

Si tienen problemas con el script report debido a que open no se reconoce como un comando y est谩n en Windows pueden cambiar open por start.

nyc report --reporter=html && start coverage/index.html

Esta incre铆ble !! un poco complejo pero bueno jaja 馃槃

As铆 yo coloque en report

 "scripts": {
    "dev": "DEBUG=app:* nodemon index",
    "start": "NODE_ENV=production node index",
    "test": "mocha --exit",
    "cover": "nyc npm run test",
    "report": "nyc report --reporter=html && cmd.exe /C start coverage/index.html"
  },

Wow, genial!!

alguien pudo resolver con peticion get a un Id?

aqui mi codigo, pero me responde con 301

    describe('GET /movies/:movieId', function () {
        
        it('should respond with status 200', function (done) {
            var movieId = '55419c54bad54b35a9cb32e64c949102/'
            request.get('/api/movies/' + movieId )
                .expect(200, done);
        });```

Ya implemente los demas test, pero me queda la duda, como los implemento para los middleware de error?

Para quienes est谩n preocupados por no haber probado los Middleware les comento que nada de nervios:

  1. S铆 hemos probado los Middleware de forma impl铆cita cuando creamos los tests de las rutas. Ah铆 se probaron, y notarlo es f谩cil. Solo deben hacer un llamado a la consola con alg煤n log y lo ver谩n en la terminal al probar las rutas.
  2. El coverage nunca debe ser un n煤mero que persigamos de forma enfermiza. Tener c贸digo funcionando de acuerdo al requerimiento del cliente sigue siendo lo m谩s importante. Es bueno tenerlo por encima del 80%, pero no todo archivo lo requiere, m谩s cuando ac谩 vemos que precisamente el Middleware parece requerir ser testeado expl铆cito para que el coverage entienda que s铆 entramos ah铆.

uff mucho que experimentar con test!

Test del Post

describe.only('POST /movies/', function() {
        it('Should respond with status 201', function(done) {
            request.post('/api/movies').expect(201, done)
        })
        
        it('Should respond with the movie created id', function(done) {
            request
                .post('/api/movies')
                .end((err, res) => {
                    assert.deepEqual(res.body, {
                        data: moviesMock[0].id,
                        message: 'movie created'
                    })
        
                    done()
                })
        })
    })```

Necesito ayuda a la hora de hacer el test me dice: Error: expected 200 鈥淥K鈥, got 500 鈥淚nternal Server Error鈥

describe('GET /movies/:movieId', function(){
    const movieId='5ef7b79b171644221a91c680';
    it('should respond with status 200', (done) => {
      request.get(`/api/movies/${movieId}`)
      .expect(200, done);
    })
  });

Veo mucho estr茅s por delante jaja pero a darle con los test

Me hubiese gustado que hiciera al menos el testing de los middlewares ya que se hacen completamente diferente por las utilidades que agrego ( joi y boom ) mal en esa parte, un video mas solo para esto no fuese caido mal y subimos el coverage que hoy en dia, mucho lo que se pide de testing

Este profesor hace todo en mac y los que usamos otros SO nos cagamos

routes.movies.test.js

movies.js

Me tiro este error:

<Couldn't get a file descriptor referring to the console
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected]1.0.0 report: `nyc report --reporter=html && open coverage/index.html`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected]1.0.0 report script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.>

Yo estoy usando Ubuntu como subsystem de windows. y me funciono de esta manera:

<   "report": "nyc report --reporter=html && cmd.exe /C start coverage/index.html">

no me reconoc铆a el 鈥渨slview鈥 en el comando report, pero lo solucion茅 con esto

"report": "nyc report --reporter=html && cmd.exe /C start coverage/index.html"

les dejo la Documentacion de nyc por si algo cambia con el tiempo.

aca enlace a npm: npmjs.com/package/nyc

Me gusto este tema 鈥淐overage鈥.

interesante la herramienta para hacer reporting y el coverage de nuestros test

El comando para abrir el reporte en chrome desde windows

 start coverage/index.html

win10 subsystem ubuntu 20.04 funciona este es de otro compa帽eroque ya habia comentado

"coverage:report": "nyc report --reporter=html && cmd.exe /C start coverage/index.html",

馃槓馃槬馃槪

Me exploto la cabeza !! 馃槂 Pero hacer test esta genial para probar nuestros proyectos鈥

A mi me sirvio este script :

"scripts": {
    "dev": "DEBUG=app:* nodemon index",
    "start": "NODE_ENV=production node index",
    "test": "mocha --exit",
    "cover": "nyc npm run test",
    "report": "nyc report --reporter=html && cmd.exe /C start coverage/index.html"
  },```