gpt4 book ai didi

android - 如何测试 Retrofit2 + RxJava2 api 调用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:38 28 4
gpt4 key购买 nike

我想知道如何通过 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);
}

谁解决了?谢谢

最佳答案

我终于找到了解决方案,所以我决定把它贴在这里。首先,您必须在可观察对象上调用 toFlowable() 并设置 Backpressure 策略,然后您可以使用 TestSubscriber 进行订阅,如下所示

t.get(LoginApiMapping.class).login(loginModel).toFlowable(BackpressureStrategy.DROP).subscribe(testSubscriber);

然后添加

testSubscriber.awaitTerminalEvent();

最后,您可以检查 testSubscriber 上的各种断言,正如 R. Zagórski 在上面的回答中指出的那样。

关于android - 如何测试 Retrofit2 + RxJava2 api 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858944/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com