Тест делает еще один провал - PullRequest
0 голосов
/ 01 января 2019

Если я проведу каждый тест по отдельности, они пройдут.Если я запускаю их вместе, проходит только первый (onGetAmountSuccess).Другие показывают сообщение об ошибке: Требуется, но не вызывается: view.showErrorMessage ();

Я уже пытался использовать Mockito.reset, но он не работал.

 class Test {

private  var myRepository: MyRepository = mock()
private  var view : MyContract.View = mock()
private  var presenter : Presenter =  MyPresenter(myRepository)

@Before
fun setup() {
    RxAndroidPlugins.setInitMainThreadSchedulerHandler { Schedulers.trampoline() }
    presenter.attach(view)
}


@Test
fun onGetAmountSuccess(){
    doAnswer { Single.just(Currency("EUR", "12/31/2018", arrayListOf()))}.whenever(myRepository).getRates()
    presenter.getRates()
    verify(view, times(1)).updateAmount(arrayListOf)
}

@Test
fun onGetAmountFailure(){
    doAnswer { Single.error<Currency>(Exception("Error"))}.whenever(myRepository).getRates()
    presenter.getRates()
    verify(view, times(1)).showErrorMessage()
}

@Test
fun onUpdateAmountFailure(){
    doAnswer { Single.error<Currency>(Exception("Error"))}.whenever(myRepository).updateAmount("USD", 100.toBigDecimal())
    presenter.updateAmount("USD", 100.toBigDecimal())
    verify(view, times(1)).showErrorMessage()

}

}

Ведущий:

 override fun updateAmount(base : String, amount: BigDecimal) {
    myRepository.
        updateAmount(base,  amount)
        .compose(applySingleSchedulers())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe (
            {currency ->
                view?.updateAmount(amount)

            },
            {
                view?.showErrorMessage()
            }
        ).apply {
            disposables.add(this)
        }
}


   override fun getRates() {
    myRepository.getRates()
        .compose(applySingleSchedulers())
        .observeOn(AndroidSchedulers.mainThread())
         .repeatWhen{ done -> done.delay(1, TimeUnit.SECONDS) }
        .subscribe (
            {currency ->
                view?.updateAmount(amount)

            },
    {
        view?.showErrorMessage()
    }
    ).apply {
            disposables.add(this)
        }
}

Я также пытался использовать сброс mockito, но он не работал:

@After
fun reset(){
    Mockito.reset(view)
    Mockito.reset(myRepository)
    presenter = MyPresenter(myRepository)
    presenter.attach(view)

}

Я использую следующую библиотеку:

com.nhaarman.mockitokotlin2: mockito-kotlin: 2.0.0

Кто-нибудь знает, что я делаю неправильно и как это исправить?Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...