Rx onErrorReturn не вызывается при запуске теста - PullRequest
0 голосов
/ 10 июля 2019

У меня есть

public Single<APIResponse> getPayment(Identity identity, String id) {
    return client.getPayment(identity, id).onErrorReturn(__ -> getTheSameEntityIfError(id));
}

client - клиент веб-службы, который вызывает внешнюю службу. В случае любой ошибки, возвращенной из client.getPayment, он будет вызывать getTheSameEntityIfError(id)

* 1008.* Я пытаюсь написать тестовый пример, чтобы охватить этот метод
@RunWith(MockitoJUnitRunner.class)
public class AdapterTest {

    @Mock
    PaymentsClient client;

    @InjectMocks
    Adapter adapter;

    Identity identity = testIdentity();
    PaymentEntity payment = testPayment();

    @Test
    public void getPayment() {
        when(client.getPayment(any(), any())).thenThrow(new NotFoundException());
        APIResponse apiResponse = adapter.getPayment(identity, "id").blockingGet();
        assertThat(payment.getId(), equalTo(apiResponse.getId(1)));
    }
}

В этом случае я хочу смоделировать, если внешняя служба client.getPayment() возвращает ошибку, затем вызовите getTheSameEntityIfError(id).Я ожидаю, что будет вызвана операция onErrorReturn, но она всегда выдает NotFoundException, а onErrorReturn никогда не вызывается.

Есть идеи, что не так?

1 Ответ

1 голос
/ 10 июля 2019

Вы высмеиваете client.getPayment(), чтобы бросить, а не возвращать что-то, с чем может работать RxJava, поэтому RxJava даже не вмешивается в этот случай.Заставьте client.getPayment вернуть Single.error().

...