akka/akka-core
View on GitHubManualTime.expectNoMessageFor does not detect a message during specified period when it exists
Open
#28,772 opened on Mar 20, 2020
1 - triagedhelp wantedt:testingt:typed
Repository metrics
- Stars
- (13,277 stars)
- PR merge metrics
- (Avg merge 8d 19h) (10 merged PRs in 30d)
Description
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)
}
}
}