Убедитесь, что метод вызывается после получения ответного обратного вызова - PullRequest
0 голосов
/ 14 октября 2018

У меня есть этот простой DataInteractor, который выбирает JsonObject из API.Когда данные не равны NULL, я сохраняю их локально на случай, если в следующий раз запрос не удастся, я могу загрузить их оттуда.Я хочу создать модульный тест, который проверяет, что когда ответ не пустой, я на самом деле вызываю метод, который создает резервную копию информации (sharedPreferencesManager.setLocalBackup ()).

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

Метод тестирования Android, вызванный послеВедущий выполняет вызов дооснащения

Модульное тестирование при дооснащении для обратного вызова

Мой Interactor:

public class DataInteractorImpl implements MainActivityContract.DataInteractor {

private SharedPreferencesManager sharedPreferencesManager;

private Retrofit retrofit = new retrofit2.Retrofit.Builder()
        .baseUrl("https://api.nytimes.com/")
        .addConverterFactory(GsonConverterFactory.create())
        .build();

public DataInteractorImpl(SharedPreferencesManager sharedPreferencesManager){
    this.sharedPreferencesManager = sharedPreferencesManager;
}

@Override
public void getNoticeArrayList(final OnFinishedListener onFinishedListener) {

    // RetrofitInstance interface
    DataInteractorService dataService = retrofit.create(DataInteractorService.class);

    Call<JsonObject> call = dataService.getNewsData(getCurrentDateYYYYMMDD());

    call.enqueue(new Callback<JsonObject>() {
        @Override
        public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {

            // if the response is not null, try to process it. Otherwise check the local backup
            if(response.body() != null){
                sharedPreferencesManager.setLocalBackup(response.body().toString());
            }
            onFinishedListener.onFinished(response.body());
        }

        @Override
        public void onFailure(Call<JsonObject> call, Throwable t) {
            //check the local backup, return the backup if there is one
            if(sharedPreferencesManager.getLocalBackup() != null) {
                onFinishedListener.onFinished(sharedPreferencesManager.getLocalBackup());
            } else {
                onFinishedListener.onFailure(t);
            }
        }
    });
}

private String getCurrentDateYYYYMMDD(){
    Date date = new Date();
    return new SimpleDateFormat("yyyyMMdd").format(date);
}

}

Любая помощь может оказаться очень полезной.Спасибо всем заранее!

...