Package akka.testkit

Class TestFSMRef<S,​D,​T extends Actor>


  • public class TestFSMRef<S,​D,​T extends Actor>
    extends TestActorRef<T>
    This is a specialized form of the TestActorRef with support for querying and setting the state of a FSM. Use a LoggingFSM with this class if you also need to inspect event traces.

    
     val fsm = TestFSMRef(new Actor with LoggingFSM[Int, Null] {
         override def logDepth = 12
         startWith(1, null)
         when(1) {
           case Event("hello", _) =&gt; goto(2)
         }
         when(2) {
           case Event("world", _) =&gt; goto(1)
         }
       })
     assert (fsm.stateName == 1)
     fsm ! "hallo"
     assert (fsm.stateName == 2)
     assert (fsm.underlyingActor.getLog == IndexedSeq(FSMLogEntry(1, null, "hallo")))
     

    Since:
    1.2
    • Constructor Detail

      • TestFSMRef

        public TestFSMRef​(ActorSystem system,
                          Props props,
                          ActorRef supervisor,
                          java.lang.String name,
                          scala.$less$colon$less<T,​FSM<S,​D>> ev)
    • Method Detail

      • apply

        public static <S,​D,​T extends ActorTestFSMRef<S,​D,​T> apply​(scala.Function0<T> factory,
                                                                                            scala.reflect.ClassTag<T> evidence$1,
                                                                                            scala.$less$colon$less<T,​FSM<S,​D>> ev,
                                                                                            ActorSystem system)
      • apply

        public static <S,​D,​T extends ActorTestFSMRef<S,​D,​T> apply​(scala.Function0<T> factory,
                                                                                            java.lang.String name,
                                                                                            scala.reflect.ClassTag<T> evidence$2,
                                                                                            scala.$less$colon$less<T,​FSM<S,​D>> ev,
                                                                                            ActorSystem system)
      • apply

        public static <S,​D,​T extends ActorTestFSMRef<S,​D,​T> apply​(scala.Function0<T> factory,
                                                                                            ActorRef supervisor,
                                                                                            java.lang.String name,
                                                                                            scala.reflect.ClassTag<T> evidence$3,
                                                                                            scala.$less$colon$less<T,​FSM<S,​D>> ev,
                                                                                            ActorSystem system)
      • apply

        public static <S,​D,​T extends ActorTestFSMRef<S,​D,​T> apply​(scala.Function0<T> factory,
                                                                                            ActorRef supervisor,
                                                                                            scala.reflect.ClassTag<T> evidence$4,
                                                                                            scala.$less$colon$less<T,​FSM<S,​D>> ev,
                                                                                            ActorSystem system)
      • stateName

        public S stateName()
        Get current state name of this FSM.
      • stateData

        public D stateData()
        Get current state data of this FSM.
      • setState

        public void setState​(S stateName,
                             D stateData,
                             scala.concurrent.duration.FiniteDuration timeout,
                             scala.Option<FSM.Reason> stopReason)
        Change FSM state; any value left out defaults to the current FSM state (timeout defaults to None). This method is directly equivalent to a corresponding transition initiated from within the FSM, including timeout and stop handling.
      • setState$default$1

        public S setState$default$1()
      • setState$default$2

        public D setState$default$2()
      • setState$default$3

        public scala.concurrent.duration.FiniteDuration setState$default$3()
      • setState$default$4

        public scala.Option<FSM.Reason> setState$default$4()
      • setTimer$default$4

        public boolean setTimer$default$4()