trait TestProbe[M] extends RecipientRef[M]
Create instances through the factories in the TestProbe companion.
A test probe is essentially a queryable mailbox which can be used in place of an actor and the received messages can then be asserted
Not for user extension
- Self Type
- TestProbe[M] with InternalRecipientRef[M]
- Annotations
- @DoNotInherit()
- Source
- TestProbe.scala
- Alphabetic
- By Inheritance
- TestProbe
- RecipientRef
- AnyRef
- Any
- by RecipientRefOps
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def awaitAssert[A](a: => A): A
Evaluate the given assert every 100 ms until it does not throw an exception and return the result.
Evaluate the given assert every 100 ms until it does not throw an exception and return the result.
If the default timeout expires the last exception is thrown.
- abstract def awaitAssert[A](a: => A, max: FiniteDuration): A
Evaluate the given assert every 100 ms until it does not throw an exception and return the result.
Evaluate the given assert every 100 ms until it does not throw an exception and return the result.
If the
max
timeout expires the last exception is thrown. - abstract def awaitAssert[A](a: => A, max: FiniteDuration, interval: FiniteDuration): A
Evaluate the given assert every
interval
until it does not throw an exception and return the result.Evaluate the given assert every
interval
until it does not throw an exception and return the result.If the
max
timeout expires the last exception is thrown.Note that the timeout is scaled using the configuration entry "pekko.actor.testkit.typed.timefactor".
- abstract def expectMessage[T <: M](max: FiniteDuration, hint: String, obj: T): T
Receive one message from the test actor and assert that it equals the given object.
Receive one message from the test actor and assert that it equals the given object. Wait time is bounded by the given duration, with an java.lang.AssertionError being thrown in case of timeout.
- returns
the received object
- abstract def expectMessage[T <: M](max: FiniteDuration, obj: T): T
Receive one message from the test actor and assert that it equals the given object.
Receive one message from the test actor and assert that it equals the given object. Wait time is bounded by the given duration, with an java.lang.AssertionError being thrown in case of timeout.
- returns
the received object
- abstract def expectMessage[T <: M](obj: T): T
Same as
expectMessage(remainingOrDefault, obj)
, but using the default timeout as deadline. - abstract def expectMessageType[T <: M](max: FiniteDuration)(implicit t: ClassTag[T]): T
Expect a message of type T to arrive within
max
or fail.Expect a message of type T to arrive within
max
or fail.max
is dilated. - abstract def expectMessageType[T <: M](implicit t: ClassTag[T]): T
Same as
expectMessageType[T](remainingOrDefault)
, but using the default timeout as deadline. - abstract def expectNoMessage(): Unit
Assert that no message is received.
Assert that no message is received. Waits for the default period configured as
pekko.actor.testkit.typed.expect-no-message-default
. That timeout is scaled using the configuration entry "pekko.actor.testkit.typed.timefactor". - abstract def expectNoMessage(max: FiniteDuration): Unit
Assert that no message is received for the specified time.
Assert that no message is received for the specified time. Supplied value is not dilated.
- abstract def expectTerminated[U](actorRef: typed.ActorRef[U]): Unit
Expect the given actor to be stopped or stop within the default timeout.
- abstract def expectTerminated[U](actorRef: typed.ActorRef[U], max: FiniteDuration): Unit
Expect the given actor to be stopped or stop within the given timeout or throw an java.lang.AssertionError.
- abstract def fishForMessage(max: FiniteDuration)(fisher: (M) => FishingOutcome): Seq[M]
Same as the other
fishForMessage
but with no hint - abstract def fishForMessage(max: FiniteDuration, hint: String)(fisher: (M) => FishingOutcome): Seq[M]
Allows for flexible matching of multiple messages within a timeout, the fisher function is fed each incoming message, and returns one of the following effects to decide on what happens next:
Allows for flexible matching of multiple messages within a timeout, the fisher function is fed each incoming message, and returns one of the following effects to decide on what happens next:
* FishingOutcomes.continue - continue with the next message given that the timeout has not been reached * FishingOutcomes.continueAndIgnore - continue and do not save the message in the returned list * FishingOutcomes.complete - successfully complete and return the message * FishingOutcomes.fail - fail the test with a custom message
Additionally failures includes the list of messages consumed. If the
fisher
function throws a match error the error is decorated with some fishing details and the test is failed (making it convenient to use this method with a partial function).- max
Max total time without the fisher function returning
CompleteFishing
before failing. The timeout is scaled using the configuration entry "pekko.actor.testkit.typed.timefactor".- returns
The messages accepted in the order they arrived
- abstract def fishForMessagePF(max: FiniteDuration)(fisher: PartialFunction[M, FishingOutcome]): Seq[M]
Same as
fishForMessage
but with no hint, accepting a partial function and failing for non-matches - abstract def fishForMessagePF(max: FiniteDuration, hint: String)(fisher: PartialFunction[M, FishingOutcome]): Seq[M]
Same as
fishForMessage
but accepting a partial function and failing for non-matches - abstract def receiveMessage(max: FiniteDuration): M
Receive one message of type
M
.Receive one message of type
M
. Wait time is bounded by themax
duration, with an java.lang.AssertionError raised in case of timeout. - abstract def receiveMessage(): M
Receive one message of type
M
within the default timeout as deadline. - abstract def receiveMessages(n: Int, max: FiniteDuration): Seq[M]
Receive
n
messages in a row before the given deadline.Receive
n
messages in a row before the given deadline.Note that the timeout is scaled using the configuration entry "pekko.actor.testkit.typed.timefactor".
- abstract def receiveMessages(n: Int): Seq[M]
Same as
receiveMessages(n, remaining)
but using the default timeout as deadline. - abstract def ref: typed.ActorRef[M]
ActorRef for this TestProbe
- abstract def remaining: FiniteDuration
Obtain time remaining for execution of the innermost enclosing
within
block or throw an java.lang.AssertionError if nowithin
block surrounds this call. - abstract def remainingOr(duration: FiniteDuration): FiniteDuration
Obtain time remaining for execution of the innermost enclosing
within
block or missing that it returns the given duration. - abstract def remainingOrDefault: FiniteDuration
Obtain time remaining for execution of the innermost enclosing
within
block or missing that it returns the properly dilated default for this case from settings (key "pekko.actor.testkit.typed.single-expect-default"). - implicit abstract def settings: TestKitSettings
- Attributes
- protected
- abstract def stop(): Unit
Stops the TestProbe.ref, which is useful when testing watch and termination.
- abstract def tell(msg: M): Unit
Send a message to the destination referenced by this
RecipientRef
using *at-most-once* messaging semantics.Send a message to the destination referenced by this
RecipientRef
using *at-most-once* messaging semantics.- Definition Classes
- RecipientRef
- abstract def within[T](max: FiniteDuration)(f: => T): T
Same as calling
within(0 seconds, max)(f)
. - abstract def within[T](min: FiniteDuration, max: FiniteDuration)(f: => T): T
Execute code block while bounding its execution time between
min
andmax
.Execute code block while bounding its execution time between
min
andmax
.within
blocks may be nested. All methods in this trait which take maximum wait times are available in a version which implicitly uses the remaining time governed by the innermost enclosingwithin
block.Note that the max timeout is scaled using the configuration entry "pekko.actor.testkit.typed.timefactor", while the min Duration is not.
val ret = within(50 millis) { test ! Ping expectMessageType[Pong] }
Concrete Value Members
- def !(msg: M): Unit
Send a message to the destination referenced by this
RecipientRef
using *at-most-once* messaging semantics.Send a message to the destination referenced by this
RecipientRef
using *at-most-once* messaging semantics.- Implicit
- This member is added by an implicit conversion from TestProbe[M] toRecipientRefOps[M] performed by method RecipientRefOps in org.apache.pekko.actor.typed.RecipientRef.
- Definition Classes
- RecipientRefOps
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (TestProbe[M], B)
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- def ensuring(cond: (TestProbe[M]) => Boolean, msg: => Any): TestProbe[M]
- def ensuring(cond: (TestProbe[M]) => Boolean): TestProbe[M]
- def ensuring(cond: Boolean, msg: => Any): TestProbe[M]
- def ensuring(cond: Boolean): TestProbe[M]
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Shadowed Implicit Value Members
- val ref: RecipientRef[M]
- Implicit
- This member is added by an implicit conversion from TestProbe[M] toRecipientRefOps[M] performed by method RecipientRefOps in org.apache.pekko.actor.typed.RecipientRef.
- Shadowing
- This implicitly inherited member is shadowed by one or more members in this class.
To access this member you can use a type ascription:(testProbe: RecipientRefOps[M]).ref
- Definition Classes
- RecipientRefOps
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from TestProbe[M] toStringFormat[TestProbe[M]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- def →[B](y: B): (TestProbe[M], B)
- Implicit
- This member is added by an implicit conversion from TestProbe[M] toArrowAssoc[TestProbe[M]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.