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. Lea más sobre WireMock en este artículo: Introducción a WireMock . Una de las características más importantes de WireMock es la coincidencia de requests . WireMock admite la coincidencia de requests con stubs y consultas de verificación utilizando los siguientes atributos: URL, método HTTP, parámetros de consulta, encabezados, cookies, cuerpo de la solicitud, etc. Entonces, en este artículo, veremos cómo funciona la coincidencia de requests con asignaciones JSON en AlambreMock.
requisitos previos:
- Consulte este artículo e instale WireMock en su máquina local: ¿Cómo descargar e instalar WireMock?
- Consulte este artículo e instale Postman en su máquina local: ¿Cómo descargar e instalar Postman en Windows?
- Cree su primer punto final de API simulado con WireMock
1. Coincidencia de URL
En WireMock, las URL pueden coincidir por igualdad o por expresión regular . Y puede hacer coincidir solo la ruta de la URL o la ruta y la consulta juntos. Veamos ambos escenarios con ejemplos.
Ejemplo: Coincidencia de igualdad solo en la ruta
Sintaxis:
{ "request": { "urlPath": "provide your url here" ... }, ... }
Ahora demostremos esto con la ayuda de Postman. Abra su cartero y envíe una solicitud POST a la siguiente URL
http://<host>:<port>/__admin/mappings
con el siguiente cuerpo de solicitud JSON
{ "request": { "method": "GET", "urlPath": "put your url as per your requirement" }, "response": { "status": 200, "body": "put your body here" } }
Por ejemplo, en este artículo nuestra URL es
URL:
http://localhost:8080/__admin/mappings
Y el cuerpo de la solicitud JSON es
Cuerpo de la solicitud:
{ "request": { "urlPath": "/gfg/user1", "method": "GET" }, "response": { "status": 200, "body": "Welcome to GeeksforGeeks!" } }
Haga clic en el botón Enviar ahora y en la Respuesta, puede ver el siguiente Cuerpo de respuesta con el código de estado 201 Creado.
Cuerpo de respuesta:
{ "id": "0eb73cc1-2070-44be-a1c9-3db40a97cea9", "request": { "urlPath": "/gfg/user1", "method": "GET" }, "response": { "status": 200, "body": "Welcome to GeeksforGeeks!" }, "uuid": "0eb73cc1-2070-44be-a1c9-3db40a97cea9" }
Consulte la imagen a continuación si está atrapado en algún lugar
Ahora, probemos nuestra API Stubbed. Vuelva a abrir una nueva pestaña en Postman y envíe una solicitud GET a la siguiente URL
http://localhost:8080/gfg/user1
Y obtendrá la siguiente respuesta en el cuerpo de Respuesta.
Welcome to GeeksforGeeks!
Consulte la imagen a continuación si está atrapado en algún lugar
Ejemplo: coincidencia de expresiones regulares solo en la ruta
Sintaxis:
{ "request": { "urlPathPattern": "/your/([a-z1-9]*)" ... }, ... }
Ahora demostremos esto con la ayuda de Postman. Abra su cartero y envíe una solicitud POST a la siguiente URL
http://localhost:8080/__admin/mappings
Y el cuerpo de la solicitud JSON es
Cuerpo de la solicitud:
{ "request": { "urlPathPattern": "/gfg/([a-z1-9]*)", "method": "GET" }, "response": { "status": 200, "body": "Welcome to GeeksforGeeks Portal!" } }
Haga clic en el botón Enviar ahora y en la Respuesta, puede ver el siguiente Cuerpo de respuesta con el código de estado 201 Creado.
Cuerpo de respuesta:
{ "id": "ed9fe262-2b79-4862-9889-39378d553a35", "request": { "urlPathPattern": "/gfg/([a-z1-9]*)", "method": "GET" }, "response": { "status": 200, "body": "Welcome to GeeksforGeeks Portal!" }, "uuid": "ed9fe262-2b79-4862-9889-39378d553a35" }
Consulte la imagen a continuación si está atrapado en algún lugar
Ahora, probemos nuestra API Stubbed. Vuelva a abrir una nueva pestaña en Postman y envíe una solicitud GET a la siguiente URL
http://localhost:8080/gfg/user1345689
Nota : puede poner cualquier mentira en az y 1-9 después de /gfg/
Y obtendrá la siguiente respuesta en el cuerpo de Respuesta.
Welcome to GeeksforGeeks Portal!
Consulte la imagen a continuación si está atrapado en algún lugar
Del mismo modo, también puede probar la demostración en su Postman para la siguiente coincidencia de requests.
Coincidencia de igualdad en ruta y consulta
Sintaxis:
{ "request": { "url": "/your/url?and=query" ... }, ... }
Coincidencia de expresiones regulares en ruta y consulta
Sintaxis:
{ "request": { "urlPattern": "/your/([a-z1-9]*)\\?and=query" ... }, ... }
2. Coincidencia de otros atributos
Aparte de la URL, todos los atributos de la solicitud pueden coincidir con algunos operadores.
Igualdad
Sintaxis:
{ "request": { ... "headers": { "Content-Type": { "equalTo": "application/xml" } } ... }, ... }
Igualdad que no distingue entre mayúsculas y minúsculas
Sintaxis:
{ "request": { ... "headers": { "Content-Type": { "equalTo": "application/xml", "caseInsensitive": true } } ... }, ... }
3. Igualdad JSON
Será una coincidencia si el atributo es JSON válido y es una coincidencia semántica para el valor esperado.
Sintaxis:
{ "request": { ... "bodyPatterns" : [ { "equalToJson" : { "name": "GeeksforGeeks" } } ] ... }, ... }
4. Igualdad XML
Será una coincidencia si el valor del atributo es XML válido y es semánticamente igual al documento XML esperado.
Sintaxis:
{ "request": { ... "bodyPatterns" : [ { "equalToXml" : "<thing>GeeksforGeeks</thing>" } ] ... }, ... }
5. Coincidencia de autenticación básica
En WireMock, también puede hacer coincidir la autenticación básica HTTP.
Sintaxis:
{ "request": { "method": "GET", "url": "/basic-auth", "basicAuth": { "username": "your user name", "password": "your password" } }, "response": { "status": 200 } }
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA