type のメッセージで応答する Akka アクターを開発していますPutAck[Try[String]]
。問題はアクター自体を開発する方法ではなく、単体テストです。
次のアクター コードを考えると、
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
失敗は、2つの例外の違いによるものだと思いました。
このケースをテストするにはどうすればよいですか?