为ViewModel编写测试用例。
其中,viewmodel使用包含数据源的repo执行操作。 错误发生在mDataSource.getWorks(回调)
ViewModel:
2217093120
real 0m0.173s
user 0m0.226s
sys 0m0.033s
回购:
mObsIsShowProgress.value = true
mRepo!!.getWorks(object :DataSource.WorksListCallback {
override fun onWorksListReceived(works: List<Work>) {
mObsWorksList.value = works;
mObsIsShowProgress.value = false
}
override fun onFailure(error_code: Int, reason: String) {
mObsIsShowProgress.value = false
}
})
ViewModelTest:
该测试旨在检查作品是否已加载。
class Repo(dataSource: RetrofitDataSource):DataSource {
var mDataSource: RetrofitDataSource = dataSource
override fun getWorks(callback: DataSource.WorksListCallback) {
mDataSource.getWorks(callback)
}
}
答案 0 :(得分:1)
您必须先进行设置,然后必须声明预期的行为,例如when(something)。thenReturn(result),例如,在调用要测试的方法之前。最后,您声明期望的结果,例如assertEquals(expectedresult,yourmethodreturnedresult)。
@Test
fun loadWorksFromRepository_dataLoaded(){
//method to test
worksRepostiory.getWorks(loadWorkCallbackCaptor)
//test
loadWorkCallbackCaptor.value.onWorksListReceived(worksList)
verify<Repo>(worksRepostiory).getWorks(capture(loadWorkCallbackCaptor))
assertTrue(LiveDataTestUtil.getValue(ViewModel.mObsIsShowProgress))
}
答案 1 :(得分:0)
您可能将事物放错了顺序。验证不检查是否曾经调用过某些东西-它检查是否已经已经调用了。您可能想要最后一次验证。