MockWebServer返回“模拟”(换句话说,“不真实”)数据。如果您在生产环境中使用了该类,则必须继续向其提供虚假数据,或者通过某个单独的库或工具进行真正的HTTP调用,并将其响应填充到MockWebServer中。那么,关键是什么?为什么不直接让OkHttp根据设计直接拨打电话?
我的猜测是你可能会误解OkHttp3和MockWebServer之间的关系。
- OkHttp3 - HTTP客户端,使得在任何HTTP栈的HTTP请求(默认情况下,使用提供的Android装置HTTP网络;无线网络连接,电池等)
- MockWebServer - 仅在测试中用来提供对OkHttp HTTP客户端进行硬编码(不是真实的)HTTP响应,以便在测试期间不需要实时网络连接,或始终如一地模拟各种网络连接问题,如丢弃的连接,无效的HTTP响应,服务器错误等。
您应该只在应用程序代码中使用OkHttp3。
在你的测试中只有,你有MockWebServer虚假回应(或者如果你这样配置截取)来测试你的应用对OkHttp3的调用。当你投入生产时,任何MockWebServer代码都不应该被引用或者调用(因为你把它全部放在test/androidTest源代码目录中,对吗?),而且OkHttp3代码会在互联网上进行真正的HTTP调用,因为MockWebServer赢得了不要在那里拦截他们了。
基本上,如果您在build.gradle
以外的任何东西,而不是testCompile 'com.squareup.okhttp3:mockwebserver:x.x.x'
和/或androidTestCompile 'com.squareup.okhttp3:mockwebserver:x.x.x'
比你做错了。主要的,真实的生产应用程序不需要模拟Web服务器,因为它将通过互联网向真实的Web服务器发出真正的呼叫。