簡體   English   中英

如何鏈接 doIfElse Scala Gatling

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM