在Play Framework中使用Scala测试Akka Actor的典型示例

在Play Framework中创建了一个Akka actor后,我现在想测试它。 但是,我立即遇到了一个问题:

  • 目前的Play Scala测试页面不包含有关测试Actor的内容,并且对所有示例都使用Specs2
  • 在Play 2.2.1源代码测试或样本中(也使用Specs2),我找不到任何演员测试示例。
  • Akka演员测试页面使用ScalaTest,Akka系统设置看起来与Play应用程序本身使用的不同。
  • Akka演员测试的确使用Specs2讨论了问题的解决方法,但没有提供这种测试的工作示例,当然也没有使用Play内置的测试装置。
  • 任何人都可以提供使用TestKit和Play的测试装置测试Akka actor的典型示例吗?

    为了一致性,我宁愿使用Specs2(坦率地说,为单个应用程序需要两个不同的测试框架似乎很奇怪),但是如果它与Play测试装置很好地集成,我会接受一个ScalaTest示例。


    没有什么特别的地方,你基本上只有测试,看起来像演员样本,但使用specs2测试语法。 如果你想使用akka测试工具,你必须在你的build.sbt中添加一个明确的依赖关系

    libraryDependencies ++= Seq(
      "com.typesafe.akka" %% "akka-testkit" % "2.2.0" % "test"
    )   
    

    那么除此之外没有什么特别之处,除了你不能在测试类上继承TestKit,因为Specification也是一个类,并且有名称类。 这是一个如何使用自定义Scope来使用TestKit的例子:

    import org.specs2.specification.Scope
    
    class ActorSpec extends Specification {
    
      class Actors extends TestKit(ActorSystem("test")) with Scope
    
      "My actor" should {
    
         "do something" in new Actors {
           val actor = system.actorOf(Props[SomeActor])
    
           val probe = TestProbe()
           actor.tell("Ping", probe.ref)
           probe.expectMsg("Pong")
         }
    
        "do something else" in new Actors { new WithApplication {
          val actor = system.actorOf(Props[SomeActorThatDependsOnApplication])
    
          val probe = TestProbe()
          actor.tell("Ping", probe.ref)
          probe.expectMsg("Pong")
        }}
    
      }
    }
    
    链接地址: http://www.djcxy.com/p/18735.html

    上一篇: Canonical Example of how to test Akka Actor using Scala in Play Framework

    下一篇: How to update the PNR Capcha added in the Indian Railways Site