Adnroid studio 3.3.
В моем приложении я использую Retrofit для выполнения http-запроса.
Также я использую MockWebServer для возврата ответа на заглушку.
При активности, когда я нажимаю кнопку, я запускаю async http-запрос (от Retrofit) и жду метода обратного вызова для возврата ответа. Вот тест Эспрессо:
@RunWith(AndroidJUnit4::class)
class AddTraderActivityTest {
@get:Rule
var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)
@Before
fun setup() {
mockServer = MockWebServer()
mockServer.start(8081)
Debug.d(TAG, "SUCCCESS_START_MOCKWEBSRVER")
}
@Test
fun buttonStart_click_longResponse() {
// stub response
mockServer.enqueue(MockResponse()
.setResponseCode(200)
.setBody(FileUtil.getStringFromFile(context, "add_trader_success_200.json"))
.setBodyDelay(5000, TimeUnit.MILLISECONDS))
onView(withId(R.id.baseTextInputEditText))
.perform(typeText(BASE_TEST))
onView(withId(R.id.quoteTextInputEditText))
.perform(typeText(QUOTE_TEST))
onView(withId(R.id.startButton))
.perform(click())
onView(withText(R.id.containerProgressBarLayout))
.check(matches(isDisplayed()))
}
Но проблема в том, что при выполнении perform(click()
метод check
не вызывается до тех пор, пока не получит ответ заглушки (через 5 секунд).
Но мне нужно вызвать метод check
немедленно после perform(click()
метода. Потому что мне нужно check
это containerProgressBarLayout
это isDisplayed()
пока не вернуть ответ на заглушку. Мне нужно проверить мой взгляд В ТЕЧЕНИЕ загрузка данных
Как я могу это сделать?