在我的加特林场景中,我需要检查会话中的一些条目,这些条目将是数字向量。我可以获取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语句上失败-因为它们都是整数,所以我希望不需要从字符串进行强制转换 失败的情况下,检查中没有存储任何内容
答案 0 :(得分:0)
我认为这是一个scala类型推断问题-在添加之前,我通过手动强制转换为Int使它起作用