用Mockito模拟Flowable包装的http响应

时间:2017-05-28 14:12:43

标签: java android unit-testing mockito rx-java

我正在使用这样的响应包装器在我的API服务中使用Rxjava2的Flowable:

@GET("api/v1/articles") 
Flowable<AResponse<List<Article>>> getArticles(@Query("cat") int cat);

我想通过使用Mockito模拟api请求来测试文章演示者,

List<Article> mList = new ArrayList<>();
mList.add(new Article());
mList.add(new Article());
doReturn(Flowable.fromArray(mList)).when(mApiService).getArticles(cat);

此异常导致测试失败:

"java.lang.ClassCastException: java.util.ArrayList cannot be cast to com...http.AResponse"

我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

AResponse对象是什么?

您正尝试使用Flowable AResponse<List<Article>> getArticles()来模拟Flowable List<Article>(您的服务API接口方法Flowable.fromArray(mList)AResponse 1}}),它不会编译,因为它不是同一个对象。

您需要创建一个mList对象(显然是您的自定义对象)类型,它将包装给定的Flowable,然后从中创建模拟的database结果。< / p>