[英]How to write test case for NoHostAvailableException in lagom with Scala?
我有一個部分函數作為exceptionHandler
,它匹配相應的異常並相應地拋出。 我應該為NoHostAvailableException
編寫一個測試用例,但我無法使用NoHostAvailableException
拋出異常。
我已經制作了一個模擬服務器,它在 Lagom 中嵌入了 Cassandra。
private val handleException: PartialFunction[Throwable, Future[List[MonitoringData]]] = {
case noHostAvailableException: NoHostAvailableException => throw new CassandraNotAvailableException(TransportErrorCode
.fromHttp(Error.CassandraNotAvailableErrorCode), Error.ErrorMessageForCassandraNotAvailable)
case _ => throw new TransportException(TransportErrorCode.InternalServerError, Error.ErrorMessageForInternalServerError)
}
"not be able to interact with the database in" {
when(mockReadDAO.getData)
.thenThrow(NoHostAvailableException)
assert(thrown.isInstanceOf[NoHostAvailableException])
}
編譯器不會將NoHostAvailableException
作為值。
注意類型之間的區別
NoHostAvailableException
和一個值
new NoHostAvailableException(...)
在
val e: NoHostAvailableException = new NoHostAvailableException(...)
從概念上講,這類似於Int
類型和值42
之間的區別
val i: Int = 42
錯誤的含義
class com.datastax.driver.core.exceptions.NoHostAvailableException is not a value
告訴我們我們在期望值的位置使用類型。 因此嘗試
when(mockReadDAO.getData).thenThrow(new NoHostAvailableException(...))
代替
when(mockReadDAO.getData).thenThrow(NoHostAvailableException)
因為NoHostAvailableException
構造函數將java.util.Map
作為參數,嘗試像這樣提供空的java.util.HashMap
val emptyHashMap = new java.util.HashMap[InetSocketAddress, Throwable]()
when(mockReadDAO.getData).thenThrow(new NoHostAvailableException(emptyHashMap))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.