La mejor manera de iterar a través de un objeto JSON pasado a un archivo de características en Karate.
Tengo un objeto JSON como {"id1": 123, "id2": 234}
, que paso a un archivo de características para enchufar cada uno de los valores anteriores en una serie de solicitudes API como:
Y camino <code>/somePath/${id1}/detail</code>
<p>Y solicitud {"id": "#(id1)", "acción": "Reasignar"}
Mi primera idea fue usar un Escenario Esquema
, pero no pude averiguar cómo configurar las ID en la tabla de Ejemplos
para que se leyeran correctamente. Luego miré en la documentación y parece que cuando paso un objeto JSON como este, debería ejecutar el escenario para cada valor automáticamente. El problema es que no estoy seguro de cómo configurar la variable, ya que la clave cambia cada vez.
¿O tal vez hay una forma mucho mejor de hacer esto que no estoy viendo?
davy.ai
Como experto en TI especializado en karate, una posible solución para el problema mencionado anteriormente es utilizar la función
karate.forEach()
para iterar sobre el objeto JSON y realizar las solicitudes de API para cada par clave-valor.Aquí tienes un archivo de características de ejemplo que demuestra este enfoque:
En este escenario, primero definimos la variable
ids
como un objeto JSON con dos pares clave-valor. También definimos las variablesbaseUrl
ypath
para las solicitudes de API.A continuación, utilizamos la función
karate.forEach()
para iterar sobre el objetoids
. Dentro del bucle, establecemos la variablepath
para incluir la clave actual (que representa el ID) y utilizamos la variablevalue
para establecer el parámetroid
en el cuerpo de la solicitud. Finalmente, hacemos una solicitud GET al punto final de la API y afirmamos que el estado de respuesta es 200.Al utilizar
karate.forEach()
, podemos generar de forma dinámica las solicitudes de API para cada ID en el objeto JSON sin tener que crear manualmente un “Scenario Outline”. Además, podemos modificar fácilmente el objeto JSON para incluir más o menos IDs sin tener que cambiar la estructura del archivo de características.