繁体   English   中英

Scala - 如何在多行字符串文字中使用变量

[英]Scala - how to use variables in a multi-line string literal

我想调用“ myActionID ”变量的值。 我该怎么做? 如果我将像 "actionId":1368201 这样的静态值传递给 myActionID 那么它就可以工作,但是如果我使用 "actionId" : ${actionIdd} 它会出错。

这是相关的代码:

class LaunchWorkflow_Act extends Simulation {

    val scenarioRepeatCount = 1
    val userCount = 1
    val myActionID = "13682002351"
    
    val scn = scenario("LaunchMyFile")
        .repeat (scenarioRepeatCount) {
            exec(session => session.set("counter", (globalVar.getAndIncrement+" "+timeStamp.toString())))
            .exec(http("LaunchRequest")
            .post("""/api/test""")
            .headers(headers_0)
            .body(StringBody(
                """{    "actionId": ${myActionID} ,
                "jConfig": "{\"wflow\":[{\"Wflow\":{\"id\": \"13500145349\"},\"inherit-variables\": true,\"workflow-context-variable\": [{\"variable-name\": \"externalFilePath\",\"variable-value\": \"/var/nem/nem/media/mount/assets/Test.mp4\"},{\"variable-name\": \"Name\",\"variable-value\": \"${counter}\"}]}]}"
                }""")))

            .pause(pause) 

        }
    }

setUp(scn.inject(atOnceUsers(userCount))).protocols(httpProtocol)

如果我输入值 13682002351 而不是 myActionID,一切正常。 在 Gatling 中执行此脚本时,出现此错误

错误 ighttp.action.HttpRequestAction - 'httpRequest-3' 执行失败:未定义名为 'myActionID' 的属性

Scala 有各种字符串插值机制(参见文档),可用于在字符串中嵌入变量。 所有这些都可以与用于创建多行字符串的三重引号"""使用。

在这种情况下,您可以使用:

val counter = 12
val myActionID = "13682002351"
val str = s"""{    
                "actionId": $myActionID ,
                "jConfig": "{\"wflow\":[{\"Wflow\":{\"id\": \"13500145349\"},\"inherit-variables\": true,\"workflow-context-variable\": [{\"variable-name\": \"externalFilePath\",\"variable-value\": \"/var/nem/nem/media/mount/assets/Test.mp4\"},{\"variable-name\": \"Name\",\"variable-value\": \"${counter}\"}]}]}"
              }"""

注意字符串字面前的s和变量名前的美元符号。

使用S 内插字符串,我们可以轻松做到这一点:

 s"""Hello Word , Welcome Back!
      How are you doing ${userName}"""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM