替换foreach变量中的字符

时间:2015-07-14 11:31:41

标签: scala gatling

以下是代码:

    def readEntityMultipleTimes(entityName: String, pathPrefix: String = "") = {
      val plural = entityName + "s"
      exec(http(s"Geting all $plural")
        .get(pathPrefix + plural)
        .check(status is 200)
        .check(jsonPath("$[*].id").findAll.saveAs("entityIds"))
      ).exec(s => {
          if (logLevel >= 2) println("\nids:\n" + s("entityIds"))
          s
      })
      .pause(interval millis)
      .foreach("${entityIds}", "entityId") {
        repeat(readEntityNumber) {
          exec(http(s"Getting one $entityName")
            .get(pathPrefix + plural + "/${entityId}") 
            .check(status is 200)
          )
        }
      }
    }

问题是entityId可能包含空格,但它无法通过HTTP GET请求。我需要用%20替换空格。

我尝试了加剧EL ${entityId.replaceAll(\" \", \"%20\")}"${java.net.URLEncoder.encode(entityId)}

我想建议的方法是从会话中获取entityId并在Scala中执行这些操作,但是这个变量是为每个循环迭代动态创建的,所以我不知道在哪里放置&#34 ;会议lambda" (session => ...)

1 个答案:

答案 0 :(得分:2)

Gatling EL语法有限,您不能在其中放置任何Scala代码。

你确实必须传递一个功能。

.get(session => pathPrefix + plural + URLEncoder.encode(session("entityId").as[String])))