仅在检查成功时才调用函数?

Call a function only if a check is success?

我只想在响应返回字符串 'Success' 时才将会话属性写入文件。

我正在尝试这样做:

.check(substring("success").onSuccess(writeThisToFile(<my variable here>))

我发现这与 IDE 所说的不符。有什么方法可以根据响应检查的结果调用函数吗?

为此,您可以在 bodyString 上使用方法 .transform()。它采用 String => T(String, Session) => T 类型的函数参数并将其应用于响应主体,因此在您的情况下它看起来像:

.check(
    bodyString.transform(
        (body: String, session: Session) => {
            if(body.contains("success")){
                File("/path/to/file")
                    .createFile()
                    .appendAll(session("attributeName").as[String])
            }
        }
    )
)

-- 已编辑 --

因此,要将请求正文的一部分保存到会话中,您要做的就是单独生成该部分,保存到会话属性中,并在创建正文时使用。例如,假设您要发送包含 2 个字段的 JSON:一些常量值 + 当前时间戳,然后如果响应包含 "success":

,则将时间戳保存到文件
val exampleScenario =  scenario("Example")
    .exec(session => {
        session.set("timestamp", System.currentTimeMillis)
    })
    .exec(http("Send data")
        .post("http://example.com")
        .body(StringBody("""{"constant":123, "timestamp": ${timestamp}}"""))
        .asJSON
        .check(
            bodyString.transform(
                (body: String, session: Session) => {
                    if(body.contains("success")){
                        File("/path/to/file")
                            .createFile()
                            .appendAll(session("timestamp").as[String])
                    }
                }
            )
        )
    )

这一定有效

 .asLongAs(session => ( YOUR CONDITION ) ) {
            exec(    http("Poll")  ) 
  }