小编ASP*_*ASP的帖子

如何使用MockWebServer验证POST Body的内容?

我有几个使用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)

我知道MockWebServertakeRequest()方法,但我坚持从该请求体获取实际的字段和数据.

谢谢您的帮助!

junit junit4 okhttp mockwebserver retrofit2

5
推荐指数
1
解决办法
3149
查看次数

如何使用 OkHttpClient MockWebSever 返回图像/字节 []?

我正在开发一个 android 库项目,我需要从 REST 服务下载 PNG 图像,将其转换为 aBitmap并使用此库将其返回给应用程序。所以,我们有一个 REST web 服务,它返回一个 png 图像的字节数。我们使用Retrofitwith调用此服务rxJava。在我下面accessRemoteComm.getImage()的代码中,在 Observable 上进行了从 aResponseBodyBitmapa 内部的加载和转换.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)

java android-library retrofit mockwebserver okhttp3

4
推荐指数
2
解决办法
1707
查看次数