WWJD
WWJD

Reputation: 1124

Can't subscribe on a RxJava 2 Observable with TestSubscriber

Why is my compiler not allowing myself to subscribe on an Observable with a TestSubscriber?

Here's my code:

TestSubscriber<User> testSubscriber = new TestSubscriber<>();
Observable.just(new User()).subscribe(testSubscriber);

And it's saying that it can't resolve method subscribe which is taking this parameter. But in all RxJava testing tutorials, they are using TestSubscriber without such problems. What can I do to test such Observable?

Upvotes: 24

Views: 4406

Answers (3)

MBX
MBX

Reputation: 154

You can change Observable to Flowable if you want to test with TestSubscriber as follow:

TestSubscriber<User> testSubscriber = new TestSubscriber<>();
Flowable.just(new User()).subscribe(testSubscriber);

Upvotes: 0

Dmitriy Popov
Dmitriy Popov

Reputation: 2360

For RxJava 1 → RxJava 2 migration, I've just replaced TestSubscriber with TestObserver to make Observable#subscribe call compile and work.

Upvotes: 5

Kiskae
Kiskae

Reputation: 25603

It is because *Subscriber are meant for Flowable while Observable uses the *Observer classes. This is because the reactive-streams standard reserves Subscriber for the fully compliant Publisher interface which Flowable implements.

Additionally with RxJava2 all reactive classes have a .test() method which will directly give you the appropriate testing object.

Upvotes: 27

Related Questions