scala - TestActorRef: Could not get the underlyingActor, says Nothing -


i trying write first scalatest following actor

object runner {   def props(race: race) = props(classof[runner], race) }  class runner(race: race) extends actor actorlogging {    import context.dispatcher    @throws[exception](classof[exception])   override def postrestart(reason: throwable): unit = context.parent ! restartrunner    override def receive: receive = loggingreceive {     case start => {       log.debug("running...")       (i <- 1 3) {         thread.sleep(200)       }       throw new runtimeexception("marathonrunner tired")     }      case startwithfuture =>       log.debug("i starting run")       race.start pipeto self      case failure(throwable) => throw throwable      case stop =>       log.debug("stopping runner")       context.stop(self)   } } 

so,

import akka.actor.{props, actorsystem} import akka.testkit.{testactorref, testkit} import org.scalatest._  class runnerspec extends testkit(actorsystem("test")) wordspeclike mustmatchers {   "a runner actor" must {     val runner = testactorref(props(new runner(new marathon)))     "receive messages" in {       runner ! start       runner.under <== says nothing (see attachment)     }   } } 

but see

enter image description here

why don't runner actor?

since props untyped not know type of actor (in case runner) build. consequently, testactorref cannot infer type either. why need explicitly state type of underlying actor when constructing testactorref using

val runner = testactorref[runner](props(new runner(new marathon))) 

in case actor did not require parameters, shortened to

val runner = testactorref[runner] 

however, since nothing base class of every scala type, underlying actor same in either case. if changing testactorref definition not possible casted yield runner.

runner.underlyingactor.asinstanceof[runner] 

Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -