lundi 9 septembre 2019

Mockito does'nt mock repository

i'm try to test my ViewModel with mockito.

This is my TestClass:

@RunWith(JUnit4::class)

class RatesViewModelTest {

@Rule @JvmField
open val instantExecutorRule = InstantTaskExecutorRule()

@Mock
var observer: Observer<Pair<ArrayList<CurrencyExchangerModel>,Boolean>>? = null

@Mock
private lateinit var repository: RatesRepository

private var currencyList = ArrayList<CurrencyModel>()

private lateinit var viewModel : RatesViewModel

@Before
fun setUp(){
    MockitoAnnotations.initMocks(this)

    currencyList.add(CurrencyModel("BASE"))
    viewModel = RatesViewModel(repository!!)
    viewModel.getCurrencyExchangerObservableList().observeForever(observer!!)
}

@Test
fun testNull(){
    Mockito.`when`(repository.getFlowableRates()).thenReturn( Flowable.just(currencyList) )
    assertTrue(viewModel.getCurrencyExchangerObservableList().hasObservers())

}

When this method is invoked:

Mockito.`when`(repository.getFlowableRates()).thenReturn( Flowable.just(currencyList) )

I got this error:

kotlin.UninitializedPropertyAccessException: lateinit property db has not been initialized

Here the method on repository:

fun getFlowableRates(): Flowable<List<CurrencyModel>> {
    return db.currencyRatesDAO().getAll()
}

What i'm doing wrong ?

Thx !

Aucun commentaire:

Enregistrer un commentaire