Mockear la capa back con Dyson

3
8668


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.


3 COMENTARIOS

  1. 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

  2. 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

Por favor ingrese su comentario!

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

Por favor ingrese su nombre aquí

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

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad