Как бы один модульный тест API-метод вызова (rxjava + дооснащение)? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь протестировать вызов API, сделанный с помощью retrofit и rxjava. Для этого я издеваюсь над объектом вызова api, но подписчик вызовов api не будет вызывать его метод onNext.

ApiCallsTest.java:

// пользовательский объект, заменяющий объект ответа на вызов API

Observable<FastRechargeClass[]> apiObservable = Observable.just(fastRechargeList);
InterfaceAPI api = mock(InterfaceAPI.class);
when(retrofitApi.getApiInterface(context)).thenReturn(api);        when(api.getLatestTransactions("token")).thenReturn(apiObservable);
apiCalls.getLatestTransactions("token",context);

ApiCalls.java:

public void getLatestTransactions(String token, final Context context) {
        String methodName = "getLatestTransactions";

        InterfaceAPI api = retrofitApi.getApiInterface(context);
        Observable<FastRechargeClass[]> call = api.getLatestTransactions(token);
        call.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Observer<FastRechargeClass[]>() {
            @Override
            public void onSubscribe(Disposable d) {
                WriteLog.print("onSubscribe");
            }

            @Override
            public void onNext(FastRechargeClass[] fastRechargeClasses) {
                fastRechargeManager.runUpdateFastRechargeDb(fastRechargeClasses);
            }

            @Override
            public void onError(Throwable e) {
                logOnFailureRequests(methodName, e.getMessage());
            }

            @Override
            public void onComplete() {
            }
        });
    }

При выполнении теста

onSubscribe вызывается и останавливается

1 Ответ

0 голосов
/ 08 мая 2019

Вам необходимо вручную запустить передачу события. Для этого нужно вызвать метод

.blockingFirst() или же .blockingGet()

зависит от наблюдаемого типа, который вы используете. Таким образом, вы должны добавить

call.blockingGet()

в конце метода getLatestTransactions или этот метод должен возвращать созданную наблюдаемую и блокировку вызова, попадая внутрь тестового метода.

...