我有几个使用Squares OkHttp的单元测试MockWebServer.测试运行得很好,一切都很好.到目前为止,我无法做的一件事是验证POST请求的内容.
我为什么要那样做?
我正在开发的REST Api有一些方法,需要在POST请求体中发送数据对象,其他方法要求将对象作为FormUrlEncoded数据字段发送.所以我想确保Retrofit接口设置正确.对规格.
以下单元测试将通过,但第一个测试将在正文内部错误地发送数据:
//Incorrect
@POST("api/v1/user/senddata")
Observable<Void> senddata (
@Path("VIN") String vin,
@Body PoiWrapper wrappedPoi);
//Correct
@FormUrlEncoded
@POST("api/v1/user/senddata")
Observable<Void> senddata(
@Path("VIN") String vin,
@Field("data") PoiWrapper wrappedPoi);
Run Code Online (Sandbox Code Playgroud)
我知道MockWebServer有takeRequest()方法,但我坚持从该请求体获取实际的字段和数据.
谢谢您的帮助!
我正在开发一个 android 库项目,我需要从 REST 服务下载 PNG 图像,将其转换为 aBitmap并使用此库将其返回给应用程序。所以,我们有一个 REST web 服务,它返回一个 png 图像的字节数。我们使用Retrofitwith调用此服务rxJava。在我下面accessRemoteComm.getImage()的代码中,在 Observable 上进行了从 aResponseBody到Bitmapa 内部的加载和转换.map。图像在应用程序中加载良好。我现在想对该方法进行单元测试,但我很难MockWebServer首先交付图像。在OnError不断调用:
java.lang.RuntimeException: Method decodeStream in android.graphics.BitmapFactory not mocked. See http://g.co/androidstudio/not-mocked for details.
这是我到目前为止:
改造界面:
@GET("webapi/user/{ID}/image")
Observable<ResponseBody> getVehicleImage(
@Path("ID") @NonNull final String id,
@Query("width") @NonNull final int width,
@Query("height") @NonNull final int height,
@Query("view") @NonNull final ImageView view
);
Run Code Online (Sandbox Code Playgroud)
getImage() 方法:
public Observable<Bitmap> getVehicleImage(@NonNull String id, @NonNull …Run Code Online (Sandbox Code Playgroud)