Насмешливые объекты, которыми вы не владеете, обычно считаются плохой практикой, в которой говорится, что вы можете попытаться увидеть, что происходит, чтобы проверить взаимодействие с имитатором, то есть
verify(mockedRow).getTimestamp("column")
Учитывая, что вы получаете пустое значение из макета, этот оператор должен завершиться ошибкой, но в случае сбоя будут показаны все фактические вызовы, полученные имитатором (и его параметры), что должно помочь вам в отладке.
Способсвести к минимуму проблемы такого рода можно с помощью сеанса mockito , в стандартном mockito они могут использоваться только через бегун JUnit, но с mockito-scala вы можете использовать их вручную, например так
MockitoScalaSession().run {
val mockedRow = mock[Row]
when(mockedRow.getTimestamp("column")).thenReturn(Timestamp.valueOf("2018-08-23 15:51:12+0530"))
//Execute your test
}
Этот код проверит, что макет не вызывается с чем-то, для чего не было заглушки, он также сообщит вам, если вы предоставили заглушки, которые фактически не использовались, и еще несколько вещей..
Если вам нравится такое поведение (и вы используете ScalaTest), вы можете автоматически применять его к каждому тесту, используя MockitoFixture
Я разработчик mockito-scala между прочим