总结会话中多个Vector的值

时间:2019-03-29 13:00:05

标签: gatling gatling-plugin

在我的加特林场景中,我需要检查会话中的一些条目,这些条目将是数字向量。我可以获取Vector(如果存在),但是当我尝试使用.sum添加它们时,我得到一个ClassCastException,指出无法将java.lang.String强制转换为java.lang.Integer

我已经通过打印从会话中检索到的值进行了调试(Vector(100,200,300)),甚至确认了各个元素都是Ints。但是,当我尝试添加其中任何一个时,无论是使用values.sum还是values(0)+ values(1)之类的东西,我都会得到类强制转换异常

我正在使用类似检查的会话设置值

.check(jsonPath("$..payments..paymentAmount").findAll.optional.saveAs("payments"))
.check(jsonPath("$..receipts..receiptAmount").findAll.optional.saveAs("receipts"))

在我的应用中,如果路径在那里,这些总会导致类似Vector(100,200,300)

然后我想对这些列表中的所有值求和,以便采取行动

.exec(session => {
   def addAmounts(listNames: Array[String]): Int = {
          listNames.foldLeft(0)((acc, listName) => {
            session(listName).validate[Seq[Int]] match {
              case Success(ints) =>  ints.sum + acc
              case Failure(error) => acc
          }})
   }

   val transactionsTotal = addAmounts(Array("payments", "receipts"))
   session.set("total",transactionsTotal) 
}

如上所述,此操作在listName.sum + acc语句上失败-因为它们都是整数,所以我希望不需要从字符串进行强制转换 失败的情况下,检查中没有存储任何内容

1 个答案:

答案 0 :(得分:0)

我认为这是一个scala类型推断问题-在添加之前,我通过手动强制转换为Int使它起作用