TDD | Test Driven Development en Api REST con Nodejs y Express desde cero

Juan Correa
4 min readJun 9, 2019

--

TDD nodejs

Adoptar el paradigma de Test Driven Development (TDD) es un parteaguas en tu carrera como desarrollador de software, marca un antes y un después ya que cambia la manera en la que estamos acostumbrados a codear en nuestro día a día.

En este post definiremos conceptos clave y en un vídeo te muestro cómo es hacer una api REST con Node y Express aplicando este paradigma.

Update: Node JS TDD (Test Driven Development) Tutorial con MongoDB

He creado un nuevo post en mi blog personal donde comparto paso a paso cómo hacer una API básica con Node JS, Express y MongoDB usando Test Driven Development.

A continuación, seguimos con el contenido de este post.

Pre requisitos

Necesitas tener instalado:

  • Nodejs versión ≥10.14.2.
  • Npm ≥ 6.4.1.
  • Tu editor/IDE de código preferido.
  • La terminal de comandos de tu preferencia.

Y estar familiarizado con:

  • Javascript.
  • Nodejs.
  • NPM.
  • Express.
  • API Rest.
  • Terminal de comandos.

¿Qué es TDD?

TDD o Test Driven Development (Desarrollo basado en pruebas), es una técnica usada para desarrollar software que consiste en iniciar por los tests y después la implementación que hará que esos tests pasen.

Podemos encontrar varias ventajas:

  • Diseñar el software de acuerdo a cómo será usado por el usuario (en mi opinión, la principal ventaja porque le das valor directo al usuario).
  • Prevenir bugs al tener el software testeado, que equivale a ahorrar dinero.
  • Software de mayor calidad.
  • Poder implementar después CI o Continuous Integration (Integración continua).

Y de cada una de estas ventajas, podemos sacar otras ventajas derivadas.

Personalmente, pienso que lo principal es asegurarse que el software añade el valor esperado, esto es, que cumpla con el propósito por el que fue creado. Esto es lo esencial.

Los pasos de TDD

Estos son pasos generales con los que se aplica el TDD:

  1. Escribir el test.
  2. Ejecutar el test (esperando que falle).
  3. Escribir la implementación de ese test.
  4. Ejecutar el test de nuevo (esperando que pase).
  5. Refactorizar (limpiar código si es necesario).
  6. Repetir.

Y tal cual estos son los pasos que iremos siguiendo.

Historias de usuario y criterios de aceptación

Por lo común, el stakeholder o el product owner es quien nos proveerá de esta información porque es quién conoce al producto/negocio. Lo recomendado es que siempre sean redactadas en inglés.

A continuación las historias de usuario y criterios de aceptación que estaremos trabajando en nuestro ejemplo.

As user, i want to register my data in the system so that i can keep my data.

Criteria acceptance:

Save user data

  • Given a user with his name and valid email
  • When the user send his data to the system
  • Then the system must save the user data

Save user data: validate user data

  • Given a user data with his name and invalid email
  • When the user send his data to the system
  • Then the system must return error validation message as “the email must be like ‘john.doe@mail.com’”

As user, i want to see all the users data stored in the system so that i can consult it

Show all users

  • Given users in the system
  • When a user wants to see all the users in the system
  • Then the system must show all the users data

As user, i want to update my name and email so that i can keep right information

Update user data

  • Given a user with his name and valid email
  • When the user send his data to the system for update
  • Then the system must update only the user data

As user, i want to delete my data from the system so that i can feel free to use the system

Delete user data

  • Given a user registered in the system
  • When the user sends a request to delete his data
  • Then the system must delete the user data

El objetivo es poder validar y satisfacer los criterios de aceptación por medio de tests, ¿Interesante, no crees?

Vídeo

¿Te ha gustado el contenido? te invito a darle clap 👏 y compartirlo! 😃

Puedes subscribirte a mi canal de YouTube para más contenidos de este tipo ⚡️🤘

--

--

Juan Correa

Full Stack JS Engineer — Developero founder — Software Development Ebooks author. https://developero.io