2016-02-04 7 views
5

Ich erstelle einen Unit Test Case für einen Akka Actor mit TestActorRef.konnte keinen impliziten Wert für das Parametersystem finden: 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 

gibt es die folgenden Fehler bei der Erstellung von 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. 

Ich bin sehr neu in diesem. Freundlich helfen.

Antwort

11

Alle Instanzen von Akteuren, TestActorRef oder tatsächlichen realen Fällen brauchen eine ActorSystem in wohnen. Die Methoden, die Akteure instanziiert und starten (wieder, Test oder auf andere Weise) erfordern eine implicitActorSystem in ihrem Umfang zu sein, so dass der zugrunde liegende Code zu schaffen Dieser Schauspieler weiß, wo er es hinstellen soll.

So, das zu berücksichtigen, müssen Sie nur sicherstellen, dass Sie am Anfang Ihrer Testcode eine Zeile Code wie folgt hinzu:

implicit val system = ActorSystem() 
+0

wie ein Charme. Vielen Dank! –

+2

Ja, dies wurde nicht in http://doc.akka.io/docs/akka/2.4/scala/testing.html angegeben. Danke, dass du es aufgezeigt hast. – Philippe