Я пытаюсь использовать 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>