![](/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.