Я разработал приложение с архитектурой Kotlin и MVP. Я хочу провести модульное тестирование с использованием Mockito, но не смог его достичь. Я получаю "Однако, было ровно 1 взаимодействие с этим фиктивным исключением".В моем приложении я использовал 5 различных классов.
- Вид - интерфейс
- Intractor - интерфейс
- IntractorImpl - класс
- Presenter - Interfacce
- PresenterImpl - Класс
Представление: - Содержит все методы, необходимые для передачи действия / фрагмента.
Intractor: - Содержит методы интерфейса результата.
IntractorImpl: - Содержит логику базы данных / сервера, будет реализована из Intractor
Presenter: - Он содержит методы для доступа к классу IntractorImpl
PresenterImpl: - Он реализован из методов результата Presenter и Intractor
Эта архитектура, которую я использовал для реализации, теперьреализовать Mockito, я получаю путаницу и в соответствии со статьями, которые я нашел в Google, если я пытаюсь реализовать, я получаю «Однако, было ровно 1 взаимодействие с этим ложным исключением»
Заmockito Я использовал следующий импорт
//Mockito
testImplementation "org.mockito:mockito-core:2.24.5"
testImplementation "org.mockito:mockito-inline:2.24.5"
Пожалуйста, если кто-нибудь что-нибудь знает, помогите мне.В первый раз я использую Мокито.Если кому-то нужна дополнительная информация, я могу опубликовать ее.Вот мой код
class EventTest {
@Mock
val homeActivity = HomeActivity()
lateinit var eventView: HomeView
lateinit var eventInteractorImpl: HomeInteractorImpl
lateinit var eventPresenter: HomePresenter
lateinit var eventInteractor: HomeInteractor.OnEventsReceivedListener
@Before
fun setUpEventPresenter() {
eventView = mock(HomeView::class.java)
eventInteractorImpl = mock(HomeInteractorImpl::class.java)
eventPresenter = HomePresenterImpl(eventView, eventInteractorImpl)
eventInteractor = mock(HomeInteractor.OnEventsReceivedListener::class.java)
}
@Test
fun startEventTest() {
val testEvents = Event(
"1",
"Test",
"Next week we have the vacation planing in Vizag",
"This is for test",
"1",
"01-10-2019",
"26-09-2019",
"8.00",
"10.47",
"",
true
)
val events: ArrayList<Event> = ArrayList<Event>()
events.add(testEvents)
eventPresenter.getEventsList(homeActivity)
verify(eventView).showProgress()
verify(eventView).showEvents(events)
verify(eventView).hideProgress()
}
}
Если я поставлю verify(eventView).showProgress()
, то никаких исключений не будет.
override fun getEventsList(context: Context) {
homeView.showProgress()
homeInteractor.getEvents(context, this)
}
В методе getEvents () мы вызываем серверную / локальную базу данных, для сервера мыиспользуя Retrofit.