如何测试 Retrofit2 + RxJava2 api 调用?
How to test Retrofit2 + RxJava2 api call?
我想知道如何通过 rxjava2 测试 Retrofit2 调用。我的改造 api 界面看起来像:
public interface LoginApiMapping {
@POST("v1/secm/oam/oauth2/token")
Observable<Response<RestResponseHolder<LoginResponseModel>>> login(@Body LoginModel model);
}
我想编写测试,通过 RxJava2 发送这个请求并检查响应。我认为 RxJava 存在问题,因为它是异步的并且测试在我得到响应之前完成,所以我尝试如下使用 TestSubscriber,但是不可能像我一样订阅 TestSubscriber>>预计
@Test
public void loginTest(){
Context appContext = InstrumentationRegistry.getTargetContext();
Api t = TestApi.create(appContext);
LoginModel loginModel = new LoginModel("username","password");
TestSubscriber<Response<RestResponseHolder<LoginResponseModel>>> testSubscriber = new TestSubscriber<>();
t.get(LoginApiMapping.class).login(loginModel).subscribe(testSubscriber);
}
谁解决了这个问题?谢谢
在测试结束时添加:
testSubscriber.awaitTerminalEvent();
然后你可以检查关于testSubscriber
的各种断言。
我终于找到了解决方案,所以我决定在这里 post。
首先,您必须在可观察对象上调用 toFlowable() 并设置 Backpressure 策略,然后您可以使用 TestSubscriber 进行订阅,如下所示
t.get(LoginApiMapping.class).login(loginModel).toFlowable(BackpressureStrategy.DROP).subscribe(testSubscriber);
然后添加
testSubscriber.awaitTerminalEvent();
最后,您可以检查 testSubscriber 上的各种断言,正如 R. Zagórski 在上面的回答中指出的那样。
您将 TestSubscriber 与 Flowable 一起使用,并将 TestObserver 与 Observable 一起使用。您可以通过将它们转换为 Flowable 或 Observable 来测试 Single、Completable 和 Maybe,但这三个的内置 test()s return TestSubscriber.
我想知道如何通过 rxjava2 测试 Retrofit2 调用。我的改造 api 界面看起来像:
public interface LoginApiMapping {
@POST("v1/secm/oam/oauth2/token")
Observable<Response<RestResponseHolder<LoginResponseModel>>> login(@Body LoginModel model);
}
我想编写测试,通过 RxJava2 发送这个请求并检查响应。我认为 RxJava 存在问题,因为它是异步的并且测试在我得到响应之前完成,所以我尝试如下使用 TestSubscriber,但是不可能像我一样订阅 TestSubscriber
@Test
public void loginTest(){
Context appContext = InstrumentationRegistry.getTargetContext();
Api t = TestApi.create(appContext);
LoginModel loginModel = new LoginModel("username","password");
TestSubscriber<Response<RestResponseHolder<LoginResponseModel>>> testSubscriber = new TestSubscriber<>();
t.get(LoginApiMapping.class).login(loginModel).subscribe(testSubscriber);
}
谁解决了这个问题?谢谢
在测试结束时添加:
testSubscriber.awaitTerminalEvent();
然后你可以检查关于testSubscriber
的各种断言。
我终于找到了解决方案,所以我决定在这里 post。 首先,您必须在可观察对象上调用 toFlowable() 并设置 Backpressure 策略,然后您可以使用 TestSubscriber 进行订阅,如下所示
t.get(LoginApiMapping.class).login(loginModel).toFlowable(BackpressureStrategy.DROP).subscribe(testSubscriber);
然后添加
testSubscriber.awaitTerminalEvent();
最后,您可以检查 testSubscriber 上的各种断言,正如 R. Zagórski 在上面的回答中指出的那样。
您将 TestSubscriber 与 Flowable 一起使用,并将 TestObserver 与 Observable 一起使用。您可以通过将它们转换为 Flowable 或 Observable 来测试 Single、Completable 和 Maybe,但这三个的内置 test()s return TestSubscriber.