Mockito никогда () не вызывается, даже если метод не вызывается? - PullRequest
1 голос
/ 23 сентября 2019

Вот мой репо

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

1 Ответ

2 голосов
/ 23 сентября 2019

Перед проверкой следует вызвать функцию, которую вы тестируете:

@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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...