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

Creaci贸n de tests para nuestras utilidades

40/48
Recursos

Aportes 19

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Este curso es un tesoro dentro de platzi, este y el curso avanzado de Nodejs con Julian duque son excelentes.

TDD es test driven development.

En otras palabras: crear primero las pruebas que hay que superar y despu茅s desarrollar el c贸digo.

  • El profesor considera magn铆fico usar esto cuando se tiene muy claro la l贸gica de negocio.
  • Si no lo tienes claro no es recomendable.
  • Tambi茅n es recomendable hacerlo cuando tienes un bug para que tu soluci贸n de 茅l perdure en el tiempo.

Otra manera de resolver si el mensaje es listado lo pueden hacer con el operador ternario 馃槂

function buildMessage(entity, action) {
  return action === "list" ? `${entity}s ${action}ed` : `${entity} ${action}d`;
}

module.exports = buildMessage;

Imaginen que su jefe les diga: 鈥[Your name] el resultado de esta funci贸n NUNCA debe ser negativo.鈥
.
Tienen 2 opciones:
.

  1. Recordar lo que su jefe les dijo SIEMPRE.
  2. Crear un test autom谩tico que verifique la funci贸n nunca retorne un n煤mero negativo.
    .

Creo que estoy entendiendo mejor los tests.

Este m贸dulo de testing me hace recordar al profesional de JS ya que ve铆as una clase y te dabas cuenta que no entendias nadaaaa (no precisamente por el profesor) y ten铆as que ver las clases como 6 veces y leer documentaci贸n e informarte por otros medios.

wuff creo que tendr茅 que ver esto de test un par de veces mas!

Para evitar la fatiga.
buildMessage.js

function buildMessage(entity, action) {
    if (action === 'list') {
      return `${entity}s ${action}ed`;
    }
  
    return `${entity} ${action}d`;
  }
  
  module.exports = buildMessage;

utils.buildMessage.test.js

const assert = require('assert');
const buildMessage = require('../utils/buildMessage');

describe.only('utils - buildMessage', function() {
  describe('when receives an entity and an action', function() {
    it('should return the respective message', function() {
      const result = buildMessage('movie', 'create');
      const expect = 'movie created';
      assert.strictEqual(result, expect);
    });
  });

  describe('when receives an entity and an action and is a list', function() {
    it('should return the respective message with the entity in plural', function() {
      const result = buildMessage('movie', 'list');
      const expected = 'movies listed';
      assert.strictEqual(result, expected);
    });
  });
});

Por alguna raz贸n empiezo a entender de a poquito esto de los test, me esperan muchas horas de estudio.

TDD => TEST DRIVEN DEVELOPMENT


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

馃槓馃槬馃槪

No entend铆 esta l铆nea, ni mucho del tema 馃槮

No es f谩cil aplicarlo pero es bueno intentarlo

En el Curso de Buenas Pr谩cticas para Escritura de C贸digo se habla del tema de TDD (eso si el c贸digo de ejemplo es en PHP): https://platzi.com/clases/1630-mejor-codigo/22216-test-driven-development/

|_ |_| _|
|
_ _

	Todo un gigachad

Si tienes un Bug y haces la prueba para replicar la falla y que tu c贸digo nuevo no vuelva a caer en esa falla realmente son Pruebas de Regresi贸n

en alg煤n momento explica qu茅 es la l贸gica de negocio?

Creo que tendr茅 que practicar mucho, porque entend铆 solo como el 50% de la clase

En mi caso utiize un Switch, de esta manera cuando queramos agregar otro test, solo agregamos el caso y listo.

function buildsMessage(entity, action) {
  switch (action) {
    case 'create':
      return `${entity} ${action}d`;
      break;

    case 'list':
      return `${entity}s ${action}ed`;
      break;

    default:
      break;
  }
}

module.exports = buildsMessage;