![](/img/trans.png)
[英]Perform Scala ".mkString(_.mkString(","))" equivalent in Gatling Java
[英]How to chain doIfElse Scala Gatling
我們正在嘗試將我們的 Gatling 測試從 Scala 遷移到 Java。我們有一個 function,它鏈接了一些 exec,並且在這之間有一個 doIfElse。 嘗試在 Java 上添加相同的內容會影響方法的返回類型,並且對 Scala 不是很熟悉,我們不確定如何將整個登錄 function 遷移到 Java class。
Scala版
def loginFlow() = group("Login Flow") {
{
login
}
}
def login(): ChainBuilder = exec { session =>
// Need to construct dynamic urls here and store in session as they won't be evaluated while the scenario is running
session.set("authorize_url", s"${getBaseUrl()}/authorize")
.set("redirect_uri", s"${getRedirectURI(Config.TARGET_ENV)}")
.set("client_id", Config.getProperty("client_id", "152ced50-1369-4b19-8b26-8f3d5d9bfd6a.hmhco.com"))
}.doIfOrElse(session => session.contains("token")) {
// If a token is provided for the user, don't login
exec { session =>
logger.debug("Using a provided token")
session
}
} {
exec { session =>
val username = session("username").as[String]
val password = session("password").as[String]
logger.debug(s"Logging In with user: ${username}/${password}")
session.set("nonce", "99999")
}
}
Java
public ChainBuilder loginFlow() {
return group("Login Flow").on(exec(login()));
}
public ChainBuilder login() {
return exec(session -> {
Session newSession = session.set("authorize_url", getBaseUrl());
session.set("redirect_uri", getRedirectURI());
session.set("client_id", Config.getProperty("client_id", "152ced50-1369-4b19-8b26-8f3d5d9bfd6a.hmhco.com")) // Missing semicolon. When it's added the return type for the method changes.
return newSession;
})
.doIfOrElse(session -> session.contains("token")).then(
exec(session -> session)
);
}
謝謝你。
事實證明,java 代碼中缺少 else 塊。 由於 Java 不支持柯里化函數,gatling 提供了一些方法以將操作鏈接在一起。 所以基於Gatling docs ,這將達到目的:
.doIfOrElse(session -> session.contains("token")).then(
exec(session -> session)
).orElse(session -> {...});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.