2016-05-16 14 views
0

我想調用'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。先謝謝了。雖然加特林執行這個腳本,我得到這個錯誤

錯誤ighttp.action.HttpRequestAction - 「的HttpRequest-3」未能 執行:無指定屬性「myActionID」被定義

+1

嘗試:'「actionId」:$ {myActionID}' – antikantian

+0

@antikantian:與您的意見,但錯誤嘗試將顯示「無指定屬性‘myActionID’被定義」 – Peter

回答

2

斯卡拉有多種字符串插值機制(見docs),可用於將變量嵌入到字符串中。所有這些都可以與用於創建多行字符串的三重引號"""一起使用。

在這種情況下,你可以使用:

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前置到字符串字面量,並預先計劃在變量名的美元符號。

+0

我不能添加你行編譯後的代碼提到val str = s「」「....」「」 – Peter

+0

不起作用,它給出錯誤status.find.in(200,304,201,202,203,204,205,206,207,208,209),b 1(100.0%)ut實際發現400. 其他任何方式??嘗試幾乎所有的組合, 「actionId」:$ actionIdD,「actionId」:$ {actionIdD},「actionId:$ actionIdD」,「actionId」:+ actionIdD,s「actionId:$ actionIdD」,s「actionId 「:$ actionIdD 但給出相同的錯誤 – Peter

+0

嘗試單獨從Gatling請求測試字符串創建 - 您可能正在查看錯誤的地方。我粘貼的代碼在Scala REPL中成功執行並插入myActionID的值 - 由於沒有足夠的上下文,我無法保證其他任何內容(json的正確性,任何其他代碼),並且您的錯誤可能來自此處。 .. –