Gatling - Schleife durch JSON-array

Habe ich einen code-block muss in einer Schleife durch ein JSON-array, welches erhalten wird aus der Reaktion von einem REST-service. (Voll gist verfügbar hier.)

.exec(http("Request_1")
  .post("/endPoint")
  .headers(headers_1)
  .body(StringBody("""REQUEST_BODY""")).asJSON
  .check(jsonPath("$.result").is("SUCCESS"))
  .check(jsonPath("$.data[*]").findAll.saveAs("pList")))
.exec(session => {
  println(session)
  session
})
.foreach("${pList}", "player"){
 exec(session => {
    val playerId = JsonPath.query("$.playerId", "${player}")
    session.set("playerId", playerId)
  })
 .exec(http("Request_1")
    .post("/endPoint")
    .headers(headers_1)
    .body(StringBody("""{"playerId":"${playerId}"}""")).asJSON
    .check(jsonPath("$.result").is("SUCCESS")))

}

Antwortformat der ersten Anfrage war

{
  "result": "SUCCESS",
  "data": [
    {
      "playerId": 2
    },
    {
      "playerId": 3
    },
    {
      "playerId": 4
    }
  ]
}

Sowie playerId zeigt sich in der Sitzung als

pList -> Vector({playerId=2, score=200}, {playerId=3, score=200}

Ich sehe bei der zweiten Anfrage der Körper ist

{"playerId":"Right(empty iterator)}

Erwartet : 3 Anfragen, die sich mit dem Körper als

 {"playerId":1}
 {"playerId":2}
 {"playerId":3}

Kann ich Loop-Schleife über das resultierende array erfolgreich, wenn ich speichern nur die playerIds:

.check(jsonPath("$.data[*].playerId").findAll.saveAs("pList")))

InformationsquelleAutor Neil | 2014-08-13

Schreibe einen Kommentar