类型不匹配。必需:session.Expression[Boolean],找到:Validation[CheckBuilder[JsonPathCheckType, JsonNode, String]

Type mismatch. Required: session.Expression[Boolean], found: Validation[CheckBuilder[JsonPathCheckType, JsonNode, String]

我收到这个错误,我不确定它是什么意思:

类型不匹配。必需:session.Expression[Boolean],找到:Validation[CheckBuilder[JsonPathCheckType, JsonNode, String] with SaveAs[JsonPathCheckType, JsonNode, String]]

我正在尝试从 API 响应 body 中为用户创建的评估检索一个名为“title”的值,并将其保存为“titleSession”。因为不是每个输入模拟的用户都会关联创建的评估,所以我试图让“titleSession”的保存仅在已经存在“title”时才会发生,因此 doIf:

  private val manifestInfoQuickAssign = getManifestInfoForCreatingAssessement
    .check(status.is(Ok),
      doIf(jsonPath("$.results[*].matches.assessment[*].title").find.exists()){
          jsonPath("$.results[*].matches.assessment[*].title").saveAs(titleSession)
      }
    )

对于上下文,这是我导入的当前 Gatling 导入:

import io.gatling.core.Predef.exec
import io.gatling.core.Predef._
import io.gatling.core.structure.ChainBuilder
import io.gatling.http.Predef._

这里还有“getManifestInfoForCreatingAssessment”:

  val getManifestInfoForCreatingAssessement = http("Get custom assessment metadata (Manifest-Resources) resources")
    .get("/api/onesearch/v1/metadata")
    .headers(getHeaderMap)
    .queryParam("collection", "Assessments")
    .queryParam("options", "search-assessments-json") //search-assessments-json for ui possibly
    .queryParam("start", "1")
    .queryParam("pageLength", "1000")
    .queryParam("searchView", "results")
    .queryParam("q", "userId:${userId} sort:title")
    .check(status is Ok,
      jsonPath("$.total").saveAs("totalAssessments"))

如果有人知道如何保存“标题”(如果它存在),即使没有 doIf 或解决错误,那就太好了。谢谢。

这是错误的,你不能在那里使用 doIf

您正在寻找 optional 验证标准:https://gatling.io/docs/gatling/reference/current/http/check/#validating