Если я проведу каждый тест по отдельности, они пройдут.Если я запускаю их вместе, проходит только первый (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
Кто-нибудь знает, что я делаю неправильно и как это исправить?Спасибо !!