即使没有调用方法,mockito never()也会被调用吗?

马诺吉

这是我的回购

interface TrendingRepository{

fun getTrendingRepos()

测试班

@RunWith(JUnit4::class)
class TrendingViewModelTest {

    private val trendingRepository = mock(TrendingRepository::class.java)
    private var trendingViewModel = TrendingViewModel(trendingRepository)

    @Test
    fun testWithNoNetwork() {
        trendingViewModel.isConnected = false
        verify(trendingRepository, never()).getTrendingRepos()
    }

    @Test
    fun testWithNetwork() {
        trendingViewModel.isConnected = true
        verify(trendingRepository, never()).getTrendingRepos()
    }
}

TrendingViewModel

fun fetchTrendingRepos() {
    if (isConnected) {
        loadingProgress.value = true
        compositeDisposable.add(
            trendingRepository.getTrendingRepos().subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe({ response ->
                    run {
                        loadingProgress.value = false
                },
                    { error ->
                        loadingProgress.value = false
                    }
                )
        )
    } 

这些测试都通过了,但是仅在有活动网络TrendingViewModel时才调用getTrendingRepos()isConnected = true

纳蒂格·巴巴耶夫(Natig Babayev)

验证之前,应先调用要测试的函数:

@RunWith(JUnit4::class)
class TrendingViewModelTest {

    private val trendingRepository = mock(TrendingRepository::class.java)
    private var trendingViewModel = TrendingViewModel(trendingRepository)

    @Test
    fun testWithNoNetwork() {
        trendingViewModel.isConnected = false
        trendingViewModel.fetchTrendingRepos()
        verify(trendingRepository, never()).getTrendingRepos()
    }

    @Test
    fun testWithNetwork() {
        trendingViewModel.isConnected = true
        trendingViewModel.fetchTrendingRepos()
        verify(trendingRepository, times(1)).getTrendingRepos()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章