У меня есть этот простой 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);
}
}
Любая помощь может оказаться очень полезной.Спасибо всем заранее!