如何使用Akka管理ref到顶级actor

时间:2015-10-06 12:01:42

标签: testing akka

如何正确管理对顶级演员的引用。

我用那个

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

但是我的测试失败了,因为akka系统在测试之间重新启动......

测试代码与播放示例非常相似:

class IntegrationSpec extends Specification  {

  "Application" should {

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

1 个答案:

答案 0 :(得分:0)

我终于找到了黑客,因为FakeApplication也使用了Global。 如果有更好的方法,请告诉我......

object Global extends GlobalSettings {

  var supervisor : ActorRef = null;

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

  }
}

[edit]根据@jean的建议,我修改了代码以使用名为Actor的代码,因此我不再需要在object中保留引用。

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

我可以通过以下方式检索演员:

context.actorSelection("/user/supervisor")