类型不匹配:找到字符串,必需io.gatling.core.validation.Validation [String]

时间:2016-06-21 06:50:46

标签: scala gatling

免责声明:我对Scala并不熟悉,所以我可能会做些蠢事。

我们正在使用Gatling进行性能测试。我目前正试图让它向我们的API提交POST请求,使用如下内容:

exec(http("post request")
  .post("http://ourApi")
  .body(
      StringBody(
          session => """{ "myContent": "value" }""" // 1
      )
  )
  .asJSON
  .check(status.is(200))
)

正如您所看到的,我在标有StringBody的行// 1处使用了表达式函数,这应该是according to the Gatling documentation

然而,当我尝试运行它时,我在那一行上得到了一个ZincCompiler错误:

type mismatch;
 found   : String("{ \"myContent\": \"value\" }")
 required: io.gatling.core.validation.Validation[String]

为什么期待Validation[String]?在文档中我只看到字符串......

1 个答案:

答案 0 :(得分:2)

您关联的页面

  

表达

     

大多数Gatling DSL方法实际上采用Expression [T]参数,这是Session =>的类型别名。验证[T]。

     

那么人们如何也能传递字符串和其他值呢?

     

原因是存在隐式转换:

     
      
  • 传递一个String时,它会被自动解析,因为Gatling EL编译器将它们转换为表达式。

  •   
  • 传递另一种类型的值时,它会自动包装到一个表达式中,该表达式将始终返回此静态值。

  •   

所以问题是隐式转换由于某种原因没有被触发。从http://gatling.io/docs/2.2.2/session/validation.html#validation开始,您可以尝试:

  1. 添加import io.gatling.commons.validation._

  2. 如果这没有帮助,请明确使用Success("""{ "myContent": "value" }""")