Я пытаюсь проверить этого простого актера:
object Notify {
def props(incidentId: Int): Props = Props(new Notify(incidentId: Int))
final case class Send(reportId: Int)
}
class Notify(incidentId: Int) extends Actor with ActorLogging {
import Notify._
log.info("Notify constructor...")
// val x = 0
// val y = 123 / x
override def receive: Receive = {
case Send(reportId) =>
log.debug(s"Notify Send $reportId")
}
}
Я получаю эту ошибку:
- должен efg * FAILED * [info] java.lang.AssertionError: утверждение не выполнено: тайм-аут (3 секунды) во время ожидаемого сообщения (123) [info] в scala.Predef $ .assert (Predef.scala: 170) [info] в akka.testkit.TestKitBase $ class.expectMsg_internal (TestKit.scala: 402) [info] в akka.testkit.TestKitBase $ class.expectMsg (TestKit.scala: 379) [info]
в akka.testkit.TestKit.expectMsg (TestKit.scala: 896) [info] в TestKitUsageSpec $$ anonfun $ 1 $$ anonfun $ apply $ mcV $ sp $ 5.apply (ActorSpec.scala: 49) [info] в TestKitUsageSpec $$ anonfun $ 1 $$ anonfun $ применить $ mcV $ sp $ 5.apply (ActorSpec.scala: 47) [info] at org.scalatest.OutcomeOf $ class.outcomeOf (OutcomeOf.scala: 85) [info]
в org.scalatest.OutcomeOf $ .outcomeOf (OutcomeOf.scala: 104)) [info] at org.scalatest.Transformer.apply (Transformer.scala: 22) [info] at org.scalatest.Transformer.apply (Transformer.scala: 20)
Myакктестовая установка выглядит следующим образом:
import scala.util.Random
import org.scalatest.BeforeAndAfterAll
import org.scalatest.WordSpecLike
import org.scalatest.Matchers
import com.typesafe.config.ConfigFactory
import akka.actor.Actor
import akka.actor.ActorRef
import akka.actor.ActorSystem
import akka.actor.Props
import akka.testkit.{ TestActors, DefaultTimeout, ImplicitSender, TestKit, TestProbe }
import scala.concurrent.duration._
import scala.collection.immutable
import com.example.notifications._
class TestKitUsageSpec
extends TestKit(ActorSystem(
"TestKitUsageSpec",
ConfigFactory.parseString(TestKitUsageSpec.config)))
with DefaultTimeout with ImplicitSender
with WordSpecLike with Matchers with BeforeAndAfterAll {
import TestKitUsageSpec._
val echoRef = system.actorOf(TestActors.echoActorProps)
val forwardRef = system.actorOf(Props(classOf[ForwardingActor], testActor))
val filterRef = system.actorOf(Props(classOf[FilteringActor], testActor))
val randomHead = Random.nextInt(6)
val randomTail = Random.nextInt(10)
val headList = immutable.Seq().padTo(randomHead, "0")
val tailList = immutable.Seq().padTo(randomTail, "1")
val seqRef =
system.actorOf(Props(classOf[SequencingActor], testActor, headList, tailList))
val notifyActor = system.actorOf(Notify.props(123))
override def afterAll {
shutdown()
}
"a b c d " should {
"e f g" in {
notifyActor ! Notify.Send(123)
expectMsg(Notify.Send(123))
}
}