2013-06-05 14 views
19

Il Akka Testing docs dare seguente modo per creare un TestActorRef:Come creare un TestActorRef in Scala per un attore con parametri costruttore?

 
import akka.testkit.TestActorRef 

val actorRef = TestActorRef[MyActor] 

Come posso estendere questo per testare un attore esistente che prende argomenti del costruttore? Quando cerco di eseguire questo come è, sostituendo nella mia classe attore, ottengo il seguente errore:

"errore durante la creazione attore akka.actor.ActorInitializationException: Impossibile creare un'istanza Attore
Assicurarsi attore non è definita all'interno di una class/trait,
se così si mette fuori dalla classe/tratto, fe in un oggetto associato,
OPPURE prova a cambiare: 'actorOf (Puntali [MyActor]' a 'actorOf (Puntelli (nuovo MyActor)'. "

Le varie idee che ho potuto inventare per aggiungere gli argomenti dopo il nome della classe all'interno delle parentesi quadre sono andati in crash e bruciati, anche .

risposta

24

Si potrebbe usare Props come questo:

val actorRef = TestActorRef(Props(new MyActor(param1, param2))) 

o in fabbrica metodo come questo:

val actorRef = TestActorRef(new MyActor(param1, param2)) 

Vedi apply metodi in oggetto TestActorRef.

+2

Grazie, questo è il trucco. Ho aggiunto una dichiarazione di tipo al val: 'val actorRef: TestActorRef [MyActor] = TestActorRef (Puntatori (nuovo MyActor (param1, param2)))' e ora sono in grado di accedervi in ​​modo pulito. – David

+0

Questo sembra non funzionare più. O almeno non funziona per un attore dichiarato all'interno di una classe di test. – davidrpugh

+0

@davidrpugh: funziona bene per me [vedi questo] (http://pastebin.com/zxFHKTj0) – senia

Problemi correlati