单元测试与具有PagedList <T>和DataSource.Factory <Int,T>的PagedList.BoundaryCallback <T>()一起使用的分页jetpack库

时间:2019-08-28 05:08:42

标签: android unit-testing android-jetpack android-paging

问题:

我正在使用Paging提供的Android Jetpack库,但无法测试{中使用PagedList<T>的{​​{1}}和DataSource.Factory<Int, T>数据{1}}

我的使用PagedList.BoundaryCallback<T>()ViewModel接收PagedList数据的代码::

PagedList.BoundaryCallback<T>()



还有我的班级MyBoundaryCallback:

PagedList.Config.Builder()



由于类final var boundaryCallback = MyBoundaryCallback( webServiceApi, mainRepository, PAGE_SIZE, appExecutors) private final val pagedListConfig = PagedList.Config.Builder() .setEnablePlaceholders(false) .setPrefetchDistance(PREFETCH_DISTANCE) .setPageSize(PAGE_SIZE) .build() var pagedListData: LiveData<PagedList<MyData>> = LivePagedListBuilder(dbDAO.loadAllPagedData(), pagedListConfig) .setBoundaryCallback(boundaryCallback) .build() 正在推送数据,就像您在上方class MyBoundaryCallback (private val webServiceApi: ApiService, private val mainRepository: MainRepository, private val networkPageLimit: Int, private val appExecutors: AppExecutors) : PagedList.BoundaryCallback<MyData>() { override fun onZeroItemsLoaded() { webServiceApi.getData(0, networkPageLimit).enqueue(WebserviceCallback()) } override fun onItemAtEndLoaded(itemAtEnd: MyData) { webServiceApi.getData((itemAtEnd.id!! + 1), networkPageLimit).enqueue(WebserviceCallback()) } private fun handleResponse(response: Response<List<MyData>>) { appExecutors.diskIO().execute { mainRepository.insertResultIntoDb(response.body()) } } inner class WebserviceCallback : Callback<List<MyData>> { override fun onFailure(call: Call<List<MyData>>, t: Throwable) { } override fun onResponse(call: Call<List<MyData>>, response: Response<List<MyData>>) { handleResponse(response) } } } 中看到的代码一样,MyBoundaryCallback对象正在从我的房间Db中获取数据,因为它发出了{{1} },找到下面的代码:

ViewModel

我不确定如何模拟LiveData,因此,如果有人对如何解决这个问题有任何想法,请与我们分享

对于简单数据列表,我可以使用以下代码进行测试:

DataSource.Factory<Int, T>

0 个答案:

没有答案