【发布时间】:2019-01-05 11:46:30
【问题描述】:
我有以下 unitTest :
@Test
fun loadMovieTrailer() {
val video = Video("id", "name", "site",
"videoId", 20, "type")
val observableResponse =
Observable.just(MovieApi.VideoWrapper(Lists.newArrayList(video)))
`when`(movieApi.trailers(anyString())).thenReturn(observableResponse)
with(viewModel) {
assertFalse(isTrailersVisible.get())
showTrailers(movie)
assertTrue(isTrailersVisible.get())
assertFalse(trailers.isEmpty())
assertTrue(trailers.size == 1)
}
}
这是movieApi.trailers改造api方法:
@GET("3/movie/{movieId}/videos")
fun trailers(@Path("movieId") movieId: String): Observable<VideoWrapper>
我在 MovieApi 中有另一种方法,我想为它编写一个测试:
@GET("3/discover/movie?language=en&sort_by=popularity.desc")
fun popularMovies(@Query("page") page: Int): Call<MovieWrapper>
如您所见,它返回Call<T> 对象而不是Observable。如何替换测试方法中的以下部分?
Observable.just(MovieApi.VideoWrapper(Lists.newArrayList(video)))
`when`(movieApi.trailers(anyString())).thenReturn(observableResponse)
完整的示例代码可以在:https://github.com/Ali-Rezaei/TMDb-Paging找到
【问题讨论】:
标签: android unit-testing kotlin