Тестирование Mockito в MVP kotlin - однако, было только 1 взаимодействие с этим фиктивным исключением - PullRequest
0 голосов
/ 26 сентября 2019

Я разработал приложение с архитектурой Kotlin и MVP. Я хочу провести модульное тестирование с использованием Mockito, но не смог его достичь. Я получаю "Однако, было ровно 1 взаимодействие с этим фиктивным исключением".В моем приложении я использовал 5 различных классов.

  1. Вид - интерфейс
  2. Intractor - интерфейс
  3. IntractorImpl - класс
  4. Presenter - Interfacce
  5. 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.

1 Ответ

0 голосов
/ 26 сентября 2019

Согласно вашему коду и объяснению, которое вы дали в комментариях, полученное вами сообщение об ошибке является правильным, потому что вы вызываете макет interactor, который не может вызвать другие функции просмотра.

Следовательно, только выследует проверить в startEventTest() is verify(eventView).showProgress() и verify(eventInteractorImpl).getEvents(any(), any()):

@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(eventInteractorImpl).getEvents(any(), any())
}

Если вы все еще хотите проверить verify(eventView).showEvents(events) и verify(eventView).hideProgress(), вместо насмешливого интерактора, вы должны создать его экземпляр.

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