2015-10-06 72 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")