如何在 Gatling 的 status.in() 中使用 getOrElse?

How to use getOrElse in status.in() of Gatling?

我有一个带有可选参数stat的方法getUsers(),这个参数代表一个single状态码。当未提供参数 stat 时,我希望函数使用 getOrElse 检查 多个 状态代码。这是我当前的代码,但不起作用:

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class UnitTestActions {

    def getUsers(stat: Option[Int]) = {
        exec(http("[GET] /users")
            .get("/users")
            .check(status.in(stat getOrElse(Seq(200, 405)))))
    }

}

以下部分有效:

check(status.in(stat getOrElse 200, 405))

stat 而不是 时提供它检查 200 和 405,这很好。 但是,当提供 stat 时,它会检查 stat 405,这不是预期的结果。

我尝试了各种方法,但每次都出现错误 cannot be applied to (Any)。有人可以帮助我吗?

OptiongetOrElse 方法具有以下签名:

final def getOrElse[B >: A](default: ⇒ B): B

它需要相同的类型或者它是超类型。因此,在这里您可以将您传递的可选 Int 映射到 Seq[Int] 并执行此操作:

stat.map(s => Seq(s)).getOrElse(defaults)

或者你可以传递一个Option[Seq[Int]],稍后你可以默认传递多个状态:

def getUsers(stat: Option[Seq[Int]])

在这里,您的代码应该保持不变。