免责声明:我对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]
?在文档中我只看到字符串......
答案 0 :(得分:2)
您关联的页面
表达
大多数Gatling DSL方法实际上采用Expression [T]参数,这是Session =>的类型别名。验证[T]。
那么人们如何也能传递字符串和其他值呢?
原因是存在隐式转换:
传递一个String时,它会被自动解析,因为Gatling EL编译器将它们转换为表达式。
传递另一种类型的值时,它会自动包装到一个表达式中,该表达式将始终返回此静态值。
所以问题是隐式转换由于某种原因没有被触发。从http://gatling.io/docs/2.2.2/session/validation.html#validation开始,您可以尝试:
添加import io.gatling.commons.validation._
。
如果这没有帮助,请明确使用Success("""{ "myContent": "value" }""")
。