Рабочий процесс должен быть следующим:
- Начало активности
- Индикатор выполнения отображается
- Пожары сетевого запроса (ресурс холостого хода уже зарегистрирован, поэтому эспрессо знает, как его ждать).
- Панель выполнения скрыта
- Отображается текст из сети.
До этого момента я написал утверждения для шагов 1, 3, 5, и он отлично работает:
onView(withText("foo 1"))
.check(matches(isDisplayed()));
Проблема заключается в том, что я понятия не имею, как сообщить espresso для проверки видимости индикатора выполнения до запроса и после запроса. p >
Рассмотрим метод onCreate()
:
super.onCreate(...);
setContentView(...);
showProgressBar(true);
apiClient.getStuff(new Callback() {
public void onSuccess() {
showProgressBar(false);
}
});
Я пробовал следующее, но он не работает:
// Activity is launched at this point.
activityRule.launchActivity(new Intent());
// Up to this point, the request has been fired and response was
// returned, so the progress bar is now GONE.
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
onView(withId(R.id.progress_bar))
.check(matches(not(isDisplayed())));
Причина, по которой это происходит, заключается в том, что, поскольку клиент зарегистрирован как ресурс бездействия, espresso будет ждать, пока он будет idle снова, прежде чем запускать первый onView(...progressbar...)...
, поэтому мне нужно, чтобы espresso знает, чтобы запустить это, прежде чем идти в режим ожидания.
EDIT: тоже не работает:
idlingResource.registerIdleTransitionCallback(new IdlingResource.ResourceCallback() {
@Override
public void onTransitionToIdle() {
onView(withId(R.id.progress_bar))
.check(matches(isDisplayed()));
}
});