I got it working like so...

val underTest = TestActorRef(MyActor.props(mockDep))

...
doThrow(new RuntimeException("fail")).when(mockDep).save("shouldFail")

...
EventFilter[RuntimeException](occurrences = 1) intercept {
 underTest ! "shouldFail"
}

Worked pretty well.


On Tuesday, February 2, 2016 at 12:51:09 PM UTC-5, Michael Frank wrote:
>
> what behavior are you trying to test with your unit test?
>
> if you are testing the behavior of the process() method with some 
> unexpected input (i.e. an exception of a specified type is thrown from 
> within the method), then you could use TestActorRef and invoke the 
> process() method directly, then await the future.  something like:
>
> val actorRef = TestActorRef[MyActor]
> // ... initialize any internal actor state
> val actor = actorRef.underlyingActor
>
> val myBadInput = ...
> a [Exception] should be thrownBy Await.result(actor.process(myBadInput), 
> Timeout(5.seconds))
>
> you might also consider extracting the process() method into a separate 
> trait, and testing it in isolation from the actor.  you could make the 
> process() method synchronous in the trait to ease testing, then in your 
> actor you can wrap the synchronous call in a future.  i like doing it this 
> way, it separates the computation part from the coordination part, and 
> makes both pieces simpler to test.
>
> -Michael
>
> On 02/01/16 17:22, Paul Cleary wrote:
>
> I have a child actor that I am trying to test using akka test kit. 
>
> Pretty simple really:
>
> def receive = {
>  case x =>
>  process(x).map(_.right) pipeTo sender}
>
>
> The process method yields a future.
>
> Now, I am trying to write a unit test (using the akka test kit), and 
> nothing I seem to do captures the error result.
>
> I can force the process method to throw an exception, but I somehow cannot 
> assert that it was thrown.
>
> Thank you!
>
> -- 
> >>>>>>>>>> Read the docs: <http://akka.io/docs/>http://akka.io/docs/
> >>>>>>>>>> Check the FAQ: 
> <http://doc.akka.io/docs/akka/current/additional/faq.html>
> http://doc.akka.io/docs/akka/current/additional/faq.html
> >>>>>>>>>> Search the archives: 
> <https://groups.google.com/group/akka-user>
> https://groups.google.com/group/akka-user
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Akka User List" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> Visit this group at https://groups.google.com/group/akka-user.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to