Отображение исключения в пользовательское исключение в RxJava2 + Retrofit2 не работает - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь использовать REST API с RxJava2 и Retrofit2, все работает нормально.Но у меня есть этот тест

    @Test
    void throwErrorIfTheIDDoesNotExist() {
        Single<DownloadFileData> metadata = restFileGateway.getMetadata("-1");
        assertThrows(RESTCallException.class, metadata::blockingGet);
    }

, который проверяет идентификатор, недоступный на API.

Который должен проходить по этому коду

    @Override
    public Single<DownloadFileData> getMetadata(String id) {
        Single<DownloadRESTFileDataDTO> response = fileService.getMetadata(id, bearerToken);
        return response.subscribeOn(Schedulers.io()).map(DownloadRESTFileDataDTO::toDownloadFileData).onErrorResumeNext(throwable -> Single.error(new RESTCallException()));
    }

Я получил эторешение для сопоставления исключения с пользовательским из здесь .В этом решении они используют Observables, в то время как я использую Single.

Проблема в том, что тест не пройден из-за этого

org.opentest4j.AssertionFailedError: Unexpected exception type thrown ==> expected: <io.beardrop.androidclient.interfaceAdapters.RESTCallException> but was: <java.lang.RuntimeException>
...