我有一个类似的抽象类:
abstract class ReadOnlyJsonFormat[T] extends RootJsonFormat[T] {
final def write(obj: T): JsValue = throw DeserializationException("Unsupported operation")
}
这个想法很简单:我的子类实现了一个只读的JSON,我并不关心将任何对象写入JSON。
现在我想使用Mockito通过模拟测试这样的类,我可以调用实现的方法,以下工作:
"My nice test" should "raise an exception" in {
val readOnlyJsonFormat = mock[ReadOnlyJsonFormat[Int]]
intercept[DeserializationException] {when(readOnlyJsonFormat.write(1)).thenCallRealMethod()}
val exc = intercept[DeserializationException] {
readOnlyJsonFormat.write(1)
}
exc.getMessage must be ("Unsupported operation")
}
但由于我的方法在.write()
时抛出异常,因此在定义模拟的行为时,我被迫拦截此类异常,这在Java中是不必要的。我是以错误的方式使用Mockito吗?我尝试使用ScalaMock,但我还没有找到一种方法来调用真正的方法。