Как проверить PublishSubject - PullRequest
       8

Как проверить PublishSubject

0 голосов
/ 01 ноября 2018

Я пытаюсь написать модульный тест для примера выше. Как я могу издеваться и тестировать PublishSubject вернуть результат

У меня есть PublishSubject

    fun loadData() {
        val publishSubject = PublishSubject.create<Boolean>()

        publishSubject.subscribe { 
            if(it) {
                view.onSuccess()
            } else {
                view.onError()
            }
        }

        useCase.loadDataFromServer(publishSubject)
    }

    @Test
    fun load_Data_From_Server_Success_Test() {             
        presenter.loadData()
        verify(view).onSuccess()
    }

Но метод onSuccess не вызывает ( Как я могу имитировать действия onNext с помощью Mockito или PowerMockito?

1 Ответ

0 голосов
/ 04 ноября 2018

Непонятно, почему у вас есть PublishSubject в методе loadData(), который недоступен извне, поэтому он не может быть запущен в его текущей форме.

Вы можете заменить его на BehaviorSubject, который содержит начальное значение:

fun loadData() {
    val subject = BehaviorSubject.createDefault(true) // <----------------

    subject.subscribe { 
        if(it) {
            view.onSuccess()
        } else {
            view.onError()
        }
    }

    useCase.loadDataFromServer(subject)
}

@Test
fun load_Data_From_Server_Success_Test() {             
    presenter.loadData()
    verify(view).onSuccess()
}

или выставьте субъект в поле и назовите onNext на нем из метода теста

val subject = PublishSubject.create();

fun loadData() {

    subject.subscribe { 
        if(it) {
            view.onSuccess()
        } else {
            view.onError()
        }
    }

    useCase.loadDataFromServer(subject)
}

@Test
fun load_Data_From_Server_Success_Test() {             
    presenter.loadData()
    subject.onNext(true)    // <-----------------------------------------
    verify(view).onSuccess()
}
...