Возможно ли добавить / удалить список модульных тестов, который происходит в onSubscribe, который отменяется в onComplete / onError без добавления новых методов для проверки? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть завершающий файл, похожий на приведенный ниже, который я пытаюсь проверить с помощью Mockito.

completable
        .doOnSubscribe {
            list.add(item)
        }.doOnError {
            list.remove(item)
            //do other stuff
        }.doOnComplete {
            list.remove(item)
            //do other stuff
        }

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

Я не могу понять, как выполнить юнит-тестирование напрямую, кроме создания методов add () и remove (), а затем их вызова и использования шпиона для подтверждения его вызова, поскольку подписка на него немедленно добавляет и удаляет это.

Это кажется немного излишним, поэтому мне интересно, не хватает ли мне способа просто вызвать часть doOnSubscribe?

1 Ответ

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

Как предложил Боб, наберите java.util.List и проверьте его:

import static org.mockito.Mockito.*;

import java.util.List;

import org.junit.Test;

import io.reactivex.subjects.CompletableSubject;

public class TestMockitoCalls {

    @Test
    public void test() {
        @SuppressWarnings("unchecked")
        List<Integer> list = mock(List.class);

        CompletableSubject source = CompletableSubject.create();

        source.doOnSubscribe(v -> list.add(1))
        .doOnError(e -> list.remove(1))
        .doOnComplete(() -> list.remove(1))
        .subscribe();

        source.onComplete();

        verify(list).add(1);
        verify(list).remove(1);
        verifyNoMoreInteractions(list);
    }
}
...