2016-02-04 10 views
5

Sto creando un caso di test unitario per un Akka Actor utilizzando TestActorRef.non ha trovato il valore implicito per il sistema di parametri: akka.actor.ActorSystem

def actorRefFactory = context 
     implicit def executionContext = actorRefFactory.dispatcher 
     implicit val OutputActor = actorRefFactory.actorOf(Props[OutputActor], "OutputActor") 

     val actorRef = TestActorRef[OutputActor] 
     val actor = actorRef.underlyingActor 

ottenendo il seguente errore nella creazione di actorRef:

- could not find implicit value for parameter system: akka.actor.ActorSystem 
    - not enough arguments for method apply: (implicit t: 
    scala.reflect.ClassTag[org.musigma.muhpc.OutputActor], implicit system: 
    akka.actor.ActorSystem)akka.testkit.TestActorRef[org.musigma.muhpc.OutputActor] in object 
    TestActorRef. Unspecified value parameter system. 

Sono molto nuovo a questo. Gentilmente aiuto.

risposta

11

Tutte le istanze di attori, TestActorRef o reali casi reali, necessitano di un ActorSystem a risiedere in. I metodi che esemplificano e aprono attori (di nuovo, prova o altrimenti) richiedono un implicitActorSystem per essere portata in modo che il codice sottostante creando quell'attore sa dove metterlo.

Quindi, tenendo conto di, basta fare in modo che si aggiunge una riga di codice come questo all'inizio del tuo codice di prova:

implicit val system = ActorSystem() 
+0

funzionato come un fascino. Grazie! –

+2

Sì, questo non è stato specificato in http://doc.akka.io/docs/akka/2.4/scala/testing.html. Grazie per segnalarlo. – Philippe

Problemi correlati