akka/akka-core
ManualTime.expectNoMessageFor does not detect a message during specified period when it exists
開放
#28,772 建立於 2020年3月20日
1 - triagedhelp wantedt:testingt:typed
倉庫指標
- 星標
- (13,277 顆星)
- PR 合併指標
- (平均合併 8天 19小時) (30 天內合併 10 個 PR)
描述
I tried the example test case introduced in https://doc.akka.io/docs/akka/current/typed/testing-async.html#controlling-the-scheduler,
even if I change the first call to manualTime.expectNoMessageFor
from manualTime.expectNoMessageFor(9.millis, probe) to manualTime.expectNoMessageFor(11.millis, probe) or longer period,
It still passes.
import scala.concurrent.duration._
import akka.actor.testkit.typed.scaladsl.ScalaTestWithActorTestKit
import akka.actor.testkit.typed.scaladsl.ManualTime
import akka.actor.testkit.typed.scaladsl.TestProbe
import akka.actor.testkit.typed.scaladsl.LogCapturing
import akka.actor.typed.scaladsl.Behaviors
import org.scalatest.wordspec.AnyWordSpecLike
class ManualTimerExampleSpec
extends ScalaTestWithActorTestKit(ManualTime.config)
with AnyWordSpecLike
with LogCapturing {
val manualTime: ManualTime = ManualTime()
"A timer" must {
"schedule non-repeated ticks" in {
case object Tick
case object Tock
val probe = TestProbe[Tock.type]()
val behavior = Behaviors.withTimers[Tick.type] { timer =>
timer.startSingleTimer(Tick, 10.millis)
Behaviors.receiveMessage { _ =>
probe.ref ! Tock
Behaviors.same
}
}
spawn(behavior)
manualTime.expectNoMessageFor(9.millis, probe)
manualTime.timePasses(2.millis)
probe.expectMessage(Tock)
manualTime.expectNoMessageFor(10.seconds, probe)
}
}
}