Akka TestKit测试多参与者消息响应

Akka TestKit测试多参与者消息响应,akka,Akka,我有一个演员,他接收了一条信息,并在收到该信息后立即生成上下文。在那之后,我旋转一个可观察对象,在这个可观察对象中,我不断地向这个参与者发送一些特定的消息,直到我达到一个期望的状态。然后我开始编写单元测试来测试参与者的行为,但我想知道如何检查期望值。下面是我的测试演员: "start to RampUp when a Dispatch command is sent" in { rampUpTypeSimActor ! Dispatch(rampUpTypeCfg.maxPower) e

我有一个演员,他接收了一条信息,并在收到该信息后立即生成上下文。在那之后,我旋转一个可观察对象,在这个可观察对象中,我不断地向这个参与者发送一些特定的消息,直到我达到一个期望的状态。然后我开始编写单元测试来测试参与者的行为,但我想知道如何检查期望值。下面是我的测试演员:

"start to RampUp when a Dispatch command is sent" in {
  rampUpTypeSimActor ! Dispatch(rampUpTypeCfg.maxPower)
  expectMsgPF(12.seconds) {
    case state: PowerPlantState =>
      // check the signals
      assert(
        state.signals(activePowerSignalKey).toDouble === 800.0,
        "expecting activePower to be 800.0, but was not the case"
      )
      assert(
        state.signals(isDispatchedSignalKey).toBoolean,
        "expected isDispatched signal to be true, but was false instead"
      )
      assert(
        state.signals(isAvailableSignalKey).toBoolean,
        "expected isAvailable signal to be true, but was false instead"
      )
      assert(
        state.rampRate === initPowerPlantState.rampRate,
        "rampRate did not match"
      )
      assert(
        state.setPoint === initPowerPlantState.setPoint,
        "setPoint did not match"
      )
    case x: Any => // If I get any other message, I fail
      fail(s"Expected a PowerPlantState as message response from the Actor, but the response was $x")
  }
}
发送调度命令后,我如何等待15秒?我需要发送另一个名为Status的命令,以便检查我的期望,但我想等待15秒,然后将状态消息发送给我的演员


有什么建议吗?

我就是这样解决的。我必须将Dispatch(…)命令移动到块内:

  within(12.seconds) {
    rampUpTypeSimActor ! Dispatch(rampUpTypeCfg.maxPower)
    expectNoMsg
  }

然后向演员发送状态消息以检查期望值

我就是这样解决的。我必须将Dispatch(…)命令移动到块内:

  within(12.seconds) {
    rampUpTypeSimActor ! Dispatch(rampUpTypeCfg.maxPower)
    expectNoMsg
  }
然后向演员发送状态消息以检查期望值