如何使用 Scala 在 lagom 中为 NoHostAvailableException 编写测试用例?
How to write test case for NoHostAvailableException in lagom with Scala?
我有一个部分函数 exceptionHandler
它匹配相应的异常并相应地抛出。
我应该为 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
作为值。
注意 type
之间的区别
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))
我有一个部分函数 exceptionHandler
它匹配相应的异常并相应地抛出。
我应该为 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
作为值。
注意 type
之间的区别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))