gpt4 book ai didi

playframework - 如何在 Play Framework 中使用 Scala 测试 Akka Actor 的规范示例

转载 作者:行者123 更新时间:2023-12-04 12:41:22 24 4
gpt4 key购买 nike

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

  • 当前Play Scala Testing页面不包含任何关于测试 Actor 的内容,并在所有示例中使用 Specs2
  • 我在 Play 2.2.1 源测试或示例(也使用 Specs2)中找不到 Actor 测试示例。
  • Akka actor test page使用 ScalaTest,并且 Akka 系统设置看起来与 Play 应用程序本身使用的不同。
  • Akka actor 测试确实讨论了使用 Specs2 解决问题的解决方法,但没有提供此类测试的有效示例,当然也不是使用 Play 内置测试装置的示例。

  • 任何人都可以提供使用 TestKit 和 Play 的测试装置测试 Akka Actor 的规范示例吗?

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

    最佳答案

    它真的没有什么特别之处,您基本上只有看起来像 Actor 示例的测试,但使用了 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")
    }}

    }
    }

    关于playframework - 如何在 Play Framework 中使用 Scala 测试 Akka Actor 的规范示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218377/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com