0

测试时(在 JVM 下)不要从 Retrofit 获得回调。

使用 Robolectric (3.0)、Wiremock (1.57:standalone) 和 Mockito (1.10.19) 测试应用程序。

该应用程序使用 Retrofit (1.9) 与后端 API 连接。App 有通过 Retrofit 调用 API 的服务,Activity 绑定到服务上。

测试运行的调试和日志显示活动调用服务,服务调用改造,改造从 Wiremock 返回结果(如预期)。

I/com.levld.client.rest.RestAdapterFactory: <--- END HTTP (6208-byte body) W/com.levld.client.rest.RetrofitErrorHandler: 内部服务器错误

内部服务器错误是故意触发改造错误处理程序(由 Wiremock 设置的状态代码)。

在调试错误处理程序时,当 Retrofit 尝试回调服务时,处理将停止。调试器中的变量显示回调设置为调用服务。

非常感谢您的帮助和建议!

4

1 回答 1

0

通过为 Retrofit 设置同步执行器来解决。这会触发 api 调用的同步执行,但仍将结果作为回调返回给调用服务。服务层的异步功能代码不变!

同步执行器代码:https ://stackoverflow.com/a/27341424/4413233 。

ps Robolectric 实际上是用于单元测试的

于 2015-09-20T05:24:10.067 回答