2015-10-06 71 views
0

如何正确管理对顶级演员的参考。如何使用Akka管理参考顶级演员参考

我使用

object MyController extends Controller { 
    lazy val supervisor = Akka.system.actorOf(Props[SupervisorActor]) 

但由于阿卡系统测试之间重新启动我的测试失败......

测试代码是非常相似的发挥例子:

class IntegrationSpec extends Specification { 

    "Application" should { 

     "example1" in new WithBrowser(WebDriverFactory(FIREFOX)) { 
     … 
     } 
     "example2" in new WithBrowser(WebDriverFactory(FIREFOX)) { 
     … 
     } 
+0

你能告诉更多的代码,如你的测试? – mattinbits

+0

“但我的测试失败,因为akka系统在测试之间重新启动”听起来像您的测试依赖于以前的测试设置的状态,通常这是坏习惯的气味 – Jean

+0

@jean同意但播放使用一些全局状态。像阿卡一样。 –

回答

0

我终于找到了一个黑客,因为FakeApplication也使用Global。 让我知道,如果有一个更好的办法...

object Global extends GlobalSettings { 

    var supervisor : ActorRef = null; 

    override def onStart(app: Application) { 
    supervisor = Akka.system.actorOf(Props[SupervisorActor]) 

    } 
} 

[编辑]正如@jean建议,我已经修改为使用一个名为Actor的代码,所以我不需要再保持一个参考一个object

override def onStart(app: Application) { 
    Akka.system.actorOf(Props[SupervisorActor], "supervisor") 
} 

而且我可以检索与该演员:

context.actorSelection("/user/supervisor")