Я разрабатываю актера Akka, который отвечает сообщением типа PutAck[Try[String]]
. Проблема заключается не в том, как развивать самого актера, а в модульных тестах.Проверьте сообщение, возвращенное аккордом akka, содержащим Try [T]
Учитывая, что следующий код актер
private def put(store: Map[String, Array[Byte]], key: String, value: Array[Byte]) = {
try {
val newStore = store + (Objects.requireNonNull(key) -> value)
sender ! PutAck(Success(key))
context.become(nonEmptyMap(newStore))
} catch {
case ex: Exception =>
sender ! PutAck(Failure(ex))
}
}
Я хочу, чтобы проверить его с помощью следующего теста
"A Storekeeper actor" must {
"receive an error message for a couple (null, value)" in {
val sk = TestActorRef[Storekeeper]
sk ! Put(null, SerializationUtils.serialize(42))
expectMsg(PutAck(Failure(new NullPointerException())))
}
}
К сожалению, тест завершается с сообщением
assertion failed: expected PutAck(Failure(java.lang.NullPointerException)), found PutAck(Failure(java.lang.NullPointerException))
Я полагал, что сбой возникает из-за разных hashCode
, которые имеют два исключения.
Как я могу проверить этот случай?
большое спасибо. Я пропустил этот метод в API :) –