Package io.reactivex.rxjava3.subscribers
Class TestSubscriber<T>
java.lang.Object
io.reactivex.rxjava3.observers.BaseTestConsumer<T,TestSubscriber<T>>
io.reactivex.rxjava3.subscribers.TestSubscriber<T>
- Type Parameters:
T
- the value type
- All Implemented Interfaces:
FlowableSubscriber<T>
,org.reactivestreams.Subscriber<T>
,org.reactivestreams.Subscription
public class TestSubscriber<T>
extends BaseTestConsumer<T,TestSubscriber<T>>
implements FlowableSubscriber<T>, org.reactivestreams.Subscription
A
Subscriber
implementation that records events and allows making assertions about them.
You can override the onSubscribe(Subscription)
, onNext(Object)
, onError(Throwable)
and
onComplete()
methods but not the others (this is by design).
When calling the default request method, you are requesting on behalf of the
wrapped actual Subscriber
if any.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static enum
A subscriber that ignores all events and does not report errors. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Makes sure the incoming Subscriptions get cancelled immediately.private final org.reactivestreams.Subscriber
<? super T> The actual subscriber to forward events to.private final AtomicLong
Holds the requested amount until a subscription arrives.private final AtomicReference
<org.reactivestreams.Subscription> Holds the current subscription if any.Fields inherited from class io.reactivex.rxjava3.observers.BaseTestConsumer
checkSubscriptionOnce, completions, done, errors, lastThread, tag, timeout, values
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a non-forwardingTestSubscriber
with an initial request value ofLong.MAX_VALUE
.TestSubscriber
(long initialRequest) Constructs a non-forwardingTestSubscriber
with the specified initial request value.TestSubscriber
(@NonNull org.reactivestreams.Subscriber<? super T> downstream) Constructs a forwardingTestSubscriber
but leaves the requesting to the wrappedSubscriber
.TestSubscriber
(@NonNull org.reactivestreams.Subscriber<? super T> actual, long initialRequest) Constructs a forwardingTestSubscriber
with the specified initial request amount and an actualSubscriber
to forward events to. -
Method Summary
Modifier and TypeMethodDescriptionprotected final TestSubscriber
<T> Assert that theonSubscribe(Subscription)
method was called exactly once.final void
cancel()
static <T> @NonNull TestSubscriber
<T> create()
Creates aTestSubscriber
withLong.MAX_VALUE
initial request amount.static <T> @NonNull TestSubscriber
<T> create
(long initialRequested) Creates aTestSubscriber
with the given initial request amount.static <T> TestSubscriber
<T> Constructs a forwardingTestSubscriber
.protected final void
dispose()
Cancel/dispose this test consumer.final boolean
final boolean
Returns true if thisTestSubscriber
has been cancelled.protected final boolean
Returns true if this test consumer was cancelled/disposed.void
void
void
protected void
onStart()
Called after the onSubscribe is called and handled.void
onSubscribe
(@NonNull org.reactivestreams.Subscription s) Implementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)
is established before callingSubscription.request(long)
.final void
request
(long n) final TestSubscriber
<T> requestMore
(long n) Callsrequest(long)
and returns this.Methods inherited from class io.reactivex.rxjava3.observers.BaseTestConsumer
assertComplete, assertEmpty, assertError, assertError, assertError, assertFailure, assertNoErrors, assertNotComplete, assertNoValues, assertResult, assertValue, assertValue, assertValueAt, assertValueAt, assertValueCount, assertValues, assertValueSequence, assertValuesOnly, await, await, awaitCount, awaitDone, fail, valueAndClass, values, withTag
-
Field Details
-
downstream
The actual subscriber to forward events to. -
cancelled
private volatile boolean cancelledMakes sure the incoming Subscriptions get cancelled immediately. -
upstream
Holds the current subscription if any. -
missedRequested
Holds the requested amount until a subscription arrives.
-
-
Constructor Details
-
TestSubscriber
public TestSubscriber()Constructs a non-forwardingTestSubscriber
with an initial request value ofLong.MAX_VALUE
. -
TestSubscriber
public TestSubscriber(long initialRequest) Constructs a non-forwardingTestSubscriber
with the specified initial request value.The
TestSubscriber
doesn't validate theinitialRequest
amount so one can test sources with invalid values as well.- Parameters:
initialRequest
- the initial request amount
-
TestSubscriber
Constructs a forwardingTestSubscriber
but leaves the requesting to the wrappedSubscriber
.- Parameters:
downstream
- the actualSubscriber
to forward events to
-
TestSubscriber
public TestSubscriber(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> actual, long initialRequest) Constructs a forwardingTestSubscriber
with the specified initial request amount and an actualSubscriber
to forward events to.The
TestSubscriber
doesn't validate the initialRequest value so one can test sources with invalid values as well.- Parameters:
actual
- the actualSubscriber
to forward events toinitialRequest
- the initial request amount
-
-
Method Details
-
create
Creates aTestSubscriber
withLong.MAX_VALUE
initial request amount.- Type Parameters:
T
- the value type- Returns:
- the new
TestSubscriber
instance. - See Also:
-
create
Creates aTestSubscriber
with the given initial request amount.- Type Parameters:
T
- the value type- Parameters:
initialRequested
- the initial requested amount- Returns:
- the new
TestSubscriber
instance.
-
create
public static <T> TestSubscriber<T> create(@NonNull @NonNull org.reactivestreams.Subscriber<? super T> delegate) Constructs a forwardingTestSubscriber
.- Type Parameters:
T
- the value type received- Parameters:
delegate
- the actualSubscriber
to forward events to- Returns:
- the new TestObserver instance
-
onSubscribe
Description copied from interface:FlowableSubscriber
Implementors of this method should make sure everything that needs to be visible inSubscriber.onNext(Object)
is established before callingSubscription.request(long)
. In practice this means no initialization should happen after therequest()
call and additional behavior is thread safe in respect toonNext
.- Specified by:
onSubscribe
in interfaceFlowableSubscriber<T>
- Specified by:
onSubscribe
in interfaceorg.reactivestreams.Subscriber<T>
-
onStart
protected void onStart()Called after the onSubscribe is called and handled. -
onNext
- Specified by:
onNext
in interfaceorg.reactivestreams.Subscriber<T>
-
onError
- Specified by:
onError
in interfaceorg.reactivestreams.Subscriber<T>
-
onComplete
public void onComplete()- Specified by:
onComplete
in interfaceorg.reactivestreams.Subscriber<T>
-
request
public final void request(long n) - Specified by:
request
in interfaceorg.reactivestreams.Subscription
-
cancel
public final void cancel()- Specified by:
cancel
in interfaceorg.reactivestreams.Subscription
-
isCancelled
public final boolean isCancelled()Returns true if thisTestSubscriber
has been cancelled.- Returns:
- true if this
TestSubscriber
has been cancelled
-
dispose
protected final void dispose()Description copied from class:BaseTestConsumer
Cancel/dispose this test consumer.- Specified by:
dispose
in classBaseTestConsumer<T,
TestSubscriber<T>>
-
isDisposed
protected final boolean isDisposed()Description copied from class:BaseTestConsumer
Returns true if this test consumer was cancelled/disposed.- Specified by:
isDisposed
in classBaseTestConsumer<T,
TestSubscriber<T>> - Returns:
- true if this test consumer was cancelled/disposed.
-
hasSubscription
public final boolean hasSubscription()- Returns:
- true if this
TestSubscriber
received aSubscription
viaonSubscribe(Subscription)
-
assertSubscribed
Assert that theonSubscribe(Subscription)
method was called exactly once.- Specified by:
assertSubscribed
in classBaseTestConsumer<T,
TestSubscriber<T>> - Returns:
- this
-
requestMore
Callsrequest(long)
and returns this.History: 2.0.1 - experimental
- Parameters:
n
- the request amount- Returns:
- this
- Since:
- 2.1
-