¿Estás visitando desde Argentina?
Ingresá a Linware Argentina ⯈
Continuar en Linware Argentina ⯈
×
¿Qué estás buscando?
BUSCAR!
BLOG
Burla sin problemas con el cliente Elasticsearch Node.js
Publicada el 08/05/2020

Un problema clásico que cada desarrollador de back-end ha enfrentado durante su trabajo es probar una aplicación que utiliza una base de datos. Una solución perfectamente válida es usar la base de datos real para probar su aplicación, pero estaría haciendo una prueba de integración, mientras desea una prueba unitaria.

Hay muchas formas de resolver este problema. Puede crear la base de datos con docker, o usar una compatible en memoria, pero si está escribiendo pruebas unitarias que se pueden paralelizar fácilmente, esto será bastante incómodo. Una forma diferente de mejorar su experiencia de prueba al hacer pruebas unitarias es usar un simulacro.

¿Qué es un simulacro?

El diccionario de Cambridge define un simulacro de la siguiente manera: no es real sino que parece o finge ser exactamente como algo .

En el software, la burla se usa a menudo al escribir pruebas unitarias, ya que una API que ha escrito puede depender de otras partes complejas de su infraestructura, como una base de datos. Para aislar el comportamiento de una API, debe reemplazar los componentes externos con simulacros que simularán el comportamiento de los componentes reales.

Burlándose de Elasticsearch (y durmiendo por la noche)

El cliente que utiliza para conectarse a Elasticsearch está diseñado para que sea fácil de ampliar y adaptar a sus necesidades. Gracias a su arquitectura interna, le permite cambiar algunos componentes específicos mientras mantiene el resto funcionando como de costumbre. Cada cliente oficial de Elasticsearch está compuesto por los siguientes componentes:

  • Capa API: cada API Elasticsearch a la que puede llamar
  • Transporte: un componente que se encarga de preparar una solicitud antes de enviarla y manejar todas las estrategias de reintento y rastreo
  • ConnectionPool: Elasticsearch es un clúster y puede tener múltiples nodos; ConnectionPool se encarga de ellos
  • Serializador: una clase con todas las estrategias de serialización, desde el JSON básico hasta el nuevo JSON delimitado por líneas
  • Conexión: la biblioteca HTTP real

La mejor manera de burlarse de Elasticsearch con los clientes oficiales es reemplazar el componente Connection, ya que tiene muy pocas responsabilidades y no interactúa con otros componentes internos que no sean recibir solicitudes y devolver respuestas.

Fuente e informe completo: Blog Elastic

Ir al Blog