В моем сценарии Гатлинга мне нужно проверить сессию на наличие нескольких записей, которые будут векторами чисел.Я могу получить Векторы, если они есть, но когда я пытаюсь добавить их, используя .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 - так как они оба Ints, я ожидаю, что нет необходимости приводить из строки.Случай сбоя, при котором ничего не было сохранено с чека, работает нормально