WireMock es una herramienta para simular API basadas en HTTP que se ejecuta en las pruebas unitarias, en el escritorio o en el entorno de prueba. También podemos decir que es un simulador de APIs basadas en HTTP, considerado una herramienta de virtualización de servicios o un servidor simulado . Le permite mantenerse productivo cuando una API de la que depende
- no existe o
- no está completo o
- Costoso de acceder
Admite la prueba de casos Edge y modos de falla. Es rápido, por lo que reduce significativamente el tiempo de construcción. En términos simples, Wiremock es una configuración simulada para pruebas de integración . Se utiliza principalmente durante el desarrollo y, de manera más significativa, durante las pruebas de integración, mientras que un sistema o servicio se comunica con una o varias dependencias/servicios externos o internos. Ahora comprendamos todo el concepto de WireMock a través de un ejemplo simple del mundo real.
Ejemplo
Por ejemplo, estamos creando una aplicación Muzix y tenemos una función dentro de esta aplicación en la que tenemos que conectarnos con una API externa proporcionada por Spotify o Ganna. Pero la pregunta es cómo realizar las pruebas de integración con las API externas. Así que habrá dos enfoques para realizar esta tarea.
1. Primer acercamiento
Este enfoque es tan obvio. Eso significa que podemos probar con algún entorno de prueba o el entorno de producción real. Pero en este enfoque tenemos que enfrentar los siguientes desafíos:
- Muchas veces hay costos involucrados en acceder a una API.
- Es posible que el sistema API externo no esté siempre disponible, lo que significa que dependemos totalmente del sistema externo y cualquier tiempo de inactividad en ese sistema afectará nuestras pruebas e indirectamente el proceso de lanzamiento.
- El sistema API externo puede o no tener un entorno de prueba, lo que significa que una API de búsqueda de música siempre puede requerir una identificación ISRC (Código de grabación estándar internacional) real para obtener y devolver respuestas.
2. Segundo enfoque
El segundo enfoque será por qué no usa un servidor simulado (Wiremock) que simula las respuestas a las requests recibidas para la dependencia.
Características de WireMock
1. Stubbing : Es una técnica que permite configurar la respuesta HTTP que devuelve el servidor WireMock cuando recibe una solicitud HTTP específica. Puede bloquear requests HTTP con WireMock utilizando el método estático giveThat() de la clase WireMock.
2. Verificación : el servidor WireMock registra todas las requests que recibe en la memoria hasta que se reinicia. Y eso hace posible verificar que se recibió una solicitud que coincida con un patrón específico, y también obtener los detalles de las requests.
3. Grabación y reproducción de interacciones: WireMock puede crear asignaciones de stubs a partir de las requests que ha recibido. Combinado con su función de proxy, esto le permite «grabar» asignaciones de código auxiliar de la interacción con las API existentes.
4. Inyección de fallas y retrasos : una de las razones principales por las que es beneficioso usar falsificaciones de servicios web cuando se realizan pruebas es para inyectar un comportamiento defectuoso que podría ser difícil de lograr que el servicio real produzca bajo demanda.
5. Simulación de comportamiento con estado : la mayoría de los servicios web tienden a tener algún estado, que cambia a medida que usted y otros interactúan con ellos. Por lo tanto, es bastante útil poder simular esto cuando ha cambiado un servicio real por un doble de prueba.
6. Se puede utilizar como
- Biblioteca JVM en pruebas unitarias
- Ejecutar como un proceso independiente en el mismo host o servidor remoto o en la nube.
7. Se puede acceder fácilmente a todas las funciones de WireMock a través de su interfaz REST (JSON) y su API de Java.
Dependencia de Maven para WireMock
Para usar la biblioteca WireMock, debe incluir la siguiente dependencia en el archivo pom.xml
Para Java 8:
<dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8</artifactId> <version>2.33.2</version> <scope>test</scope> </dependency>
Para Java 8 independiente:
<dependency> <groupId>com.github.tomakehurst</groupId> <artifactId>wiremock-jre8-standalone</artifactId> <version>2.33.2</version> <scope>test</scope> </dependency>
Nota : la versión de Java debe ser 8 o superior para poder utilizar esta dependencia.
Dependencia de Gradle para WireMock
Para usar la biblioteca WireMock, debe incluir la siguiente dependencia en el archivo build.gradle .
Para Java 8:
testImplementation "com.github.tomakehurst:wiremock-jre8:2.33.2"
Para Java 8 independiente:
testImplementation "com.github.tomakehurst:wiremock-jre8-standalone:2.33.2"
Nota : la versión de Java debe ser 8 o superior para poder utilizar esta dependencia.
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA