Mockear la capa back con Dyson

En este tutorial vamos a ver un recurso que nos permite poner paz entre la capa back y la capa front de un proyecto.


Mockear la capa back con Dyson

0. Índice de
contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 15″ (2,3 Ghz Intel Core i7, 16 GB DDR3)
  • Sistema Operativo: Mac OS X Mavericks
  • Node v0.10.31

2. Introducción

Dyson ha llegado para apaciguar la eterna lucha entre el Front y el Back. No es raro en los proyectos actuales tener una o varias capas Front y un Back que accede a la información
en el servidor y que se comuniquen a través de mensajes JSON.


Cuando estamos desarrollando un proyecto de estas características es fácil encontranos con que el Front tiene que esperar a que Back genere el JSON para poder probar esta parte
de su funcionlidad. Llegados a este punto los de Front se plantean crear objetos Dummy que simulen está comunicación y que luego tienen que deshechar cuando la comunicación real
finalmente se produce.


Con Dyson podemos minimizar está integración dado que crea un servidor que responde JSON en base a una URL que le pasemos. De esta forma el código del Front llamará al servidor
creado con Dyson con la URL real y éste le devolverá el JSON que espera en base a los parámetros de la URL y la plantilla de respuesta que tenga asociada ese petición.


Además Dyson nos proporciona la posibilidad de rellenar con datos aleatorios los valores de los campos que queramos devolver en el JSON.


Fácil, sencillo y transparente.

3. Veamos como funciona

Lo primero que tenemos que tener instalado en nuestra máquina es una instancia de node, en el ámbito de este tutorial node lo utilizaremos como una caja negra que nos proporciona
funcionalidad de forma transparente y que es imprescindible para que Dyson funcione.


Lo siguiente es instalar Dyson a través de línea de comandos:


  sudo npm -g install dyson

Esperamos a que el terminal termine de realizar las operaciones y ya tendremos Dyson instalado en la máquina.


Ahora vamos a crear nuestro proyecto Dyson. Para ello desde el terminal, dentro de la carpeta que se quiera, ejecutamos el comando:


  dyson init TutorialDyson

Esto hace que se cree la carpeta TutorialDyson con 4 subcarpetas con las posibles operaciones REST (delete, get, post y put) y dentro de ellas unos «templates» de ejemplo; los
cuales podemos probar ejecutando directamente el comando:


  dyson TutorialDyson

Veremos por pantalla como se registran las URLs de cada uno de los endpoints y como se levanta el servidor en la URL: http://localhost:3000


  Registering GET service at /dummy/:id?
  Registering GET service at /requireparams
  Registering POST service at /dummy
  Registering PUT service at /dummy
  Registering DELETE service at /dummy
  Dyson listening at port 3000

De esta forma si por ejemplo ejecutamos en un navegador http://localhost:3000/dummy/1 veremos como nos devuelve el JSON que se corresponde con el template definido en el
fichero get/dummy.js cuyo contenido es el siguiente:


  module.exports = {
    path: '/dummy/:id?',
    template: {
        id: function(params) {
            return params.id || 1;
        },
        name: 'Lars',
        status: 'OK'
    }
};

Esto hace que el servidor registre el Endpoint /dummy/ con el parámetro id y lo asocie con la salida JSON definida en el parámetro template, que en este caso pinta el parámetro de
entrada id seguido del nombre ‘Lars’ y el status ‘OK’.


De esta forma podemos ir modelando todas las respuestas JSON que esperemos de Back y nos independizamos del desarrollo real del servicio.


Podemos cambiar el puerto de escucha del servidor simplemente arrancando dyson con un segundo parámetro con el número de puerto deseado.


  dyson TutorialDyson 8080

4. Conclusiones

Como véis los de Front ya han pérdido el argumento que Back va muy lento en sus desarrollos y eso les obliga a tener que implementar más código para completar su parte. 😉


Para más detalles podéis consultar la web del proyecto y sobre todo cacharrear con los templates de ejemplo.


Cualquier duda o sugerencia en la zona de comentarios.

Saludos.


Comentarios

3 respuestas

  1. $ dyson init
    /usr/bin/env: node: No existe el archivo o el directorio

    A qué se debe este error? Creo tenerlo todo instalado correctamente.

    Un saludo.

  2. Hola Jordi,

    Ese error hace pensar que no tienes correctamente configurado el path de node en tus variables del sistema.

    Si pruebas a ejecutar «node –version» en un terminal seguramente te encuentres con el mismo error.

    Para resolverlo, ve a tu fichero o donde gestiones las variables del sistema (depende del sistema operativo que estés utilizando) y añade la ruta donde tengas instalado node a la variable PATH del sistema.

    Espero que esto te ayude.

    Saludos

  3. Buenas Rubén,

    Al realizar el comando init:

    $dyson init [dir]

    Sale el error de Directory does not exist. Tengo node instalado y me funciona el comando «node -v»

    ¿Qué puede fallar?

    Gracias y un saludo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática, especialidad en Ingeniería del Software.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4