【发布时间】:2020-12-03 05:44:16
【问题描述】:
我正在尝试为我的 ViewModel 类编写单元测试。 在这种情况下,我有一个活动,它在创建时订阅我的存储库(来自 viewModel 的 LiveData)并从网络或数据库中检索 Github 存储库列表。
我应该在这里测试什么?我试着写了两个测试方法:
dontFetchWithoutObservers 失败并显示以下内容:
[![在此处输入图片描述][1]][1]
fetchWhenObserved 失败并显示以下内容: [![在此处输入图片描述][2]][2]
这是我的 ViewModel 类:
class MainViewModel @ViewModelInject constructor(mainRepository: MainRepository) : ViewModel() {
val repo: LiveData<Resource<List<Repository>>> = mainRepository.getRepositories()
}
还有我的 ViewModel 测试类:
@RunWith(JUnit4::class)
class MainViewModelTest {
@Rule
@JvmField
val instantTaskExecutorRule = InstantTaskExecutorRule()
private val mainRepository = mock(MainRepository::class.java)
private lateinit var mainViewModel: MainViewModel
@Before
fun init() {
mainViewModel = MainViewModel(mainRepository)
}
@Test
fun dontFetchWithoutObservers() {
verify(mainRepository, never()).getRepositories()
}
@Test
fun fetchWhenObserved() {
mainViewModel.repo.observeForever(mock())
verify(mainRepository).getRepositories()
}
}
【问题讨论】: