Hello, everybody.
I'm using a trait to override certain properties of an actor for testing 
purposes.

trait TestingActor {
  this: RealActor =>

  private val someParameter =
    Duration(context.system.settings.config.getDuration("some.parameter")

  private val someOtherParameter = context.system.settings.config getInt 
"some.otherParameter"

  override def createChildActor() =
    context.actorOf(RealChildActor.props(someParameter, someOtherParameter), 
"child-actor")
}

The trait is then mixed in inside the test suite like this:

val testingActor = actor("test-case")(new RealActor(Int.MaxValue) with 
TestingActor)

This allows the test to create another actor using the parameters defined 
in the test application.conf to make the tests run quicker by defining 
small period of times for events that have to happen throughout the actor's 
lifecycle.

*The weird behavior is the following*: someParameter value is defined when 
the actor is instantiated but it's null when createChildActor is invoked. 
I've put a couple of console outputs in the trait to find this out. This 
behavior causes a NullPointerException that prevents the tests from passing.

Defining someParameter as a def or simply putting the config lookup 
directly in the createChildActor method worked around the problem but as 
these tests are part of a suit provided for a course I've followed, 
I shouldn't be tampering with them. Furthermore, the people who followed 
the course with me didn't have the same problem (and couldn't help me find 
a solution, unfortunately).

I've also noticed that someOtherParameter seems to have the same problem, 
as its value is actually the one in the test application.conf when the 
actor is instantiated but it's 0 when createChildActor is called.

To spice things up a little bit, I hoped to have solved the problem by 
running sbt clean, but this even weirder thing happened: for a few times, 
cleaning up and recompiling made my tests go green just once, failing on 
subsequent sbt test runs without touching any code at all. After two or 
three times this clean up/recompile trick didn't work any longer, and now 
my tests always fail because of this problem. I'm *really* puzzled.

I've tried to run my tests with activator (based on sbt 0.13.7-M5) and sbt 
0.13.8, 0.13.7 and 0.13.6. I've also tried to compile everything with both 
Scala 2.11.2 and Scala 2.11.6.
I'm running on OS X Yosemite 10.10.2 (Build 14C1514). 

Does anybody have any idea of what is going on? Thanks to all of you in 
advance.

-- 
>>>>>>>>>>      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 http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to