Для простоты предположим, что у нас есть метод с именем listTail
, который определен следующим образом:
private def listTail(ls: List[Int]): List[Int] = {
ls.tail
}
Также у нас есть метод, который обрабатывает исключение, когда список пуст.
private def handleEmptyList(ls: List[Int]): List[Int] = {
if(ls.isEmpty) List.empty[Int]
}
Теперь я хочу создать безопасную версию метода listTail
, который использует оба метода:
import scala.util.{Try, Success, Failure}
def safeListTail(ls: List[Int]): List[Int] = {
val tryTail: Try[List[Int]] = Try(listTail(ls))
tryTail match {
case Success(list) => list
case Failure(_) => handleEmptyList(ls)
}
}
У меня вопрос: если два частных метода уже проверены, то должен ли я также проверить безопасный метод? И если да, то как?
Я думал просто проверить, выполняются ли случаи сопоставления с образцом в зависимости от ввода. То есть, когда мы обращаемся к случаю сбоя, выполняется метод handleEmptyList
. Но теперь я знаю, как это проверить.
Или мне нужно реорганизовать мой код и поместить все в один метод? Хотя, возможно, мои личные методы намного сложнее, чем в этом примере.
Мой тест написан с использованием ScalaTest.