Android Studio 3.3.Модификация 2. Я хочу, чтобы после нажатия кнопки startButton
имитировалась длительная реакция (5 секунд).Вот мой тест эспрессо:
import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer
import org.junit.After
import org.junit.Before
import java.util.concurrent.TimeUnit
@RunWith(AndroidJUnit4::class)
class AddTraderActivityTest {
@get:Rule
var addTraderIntentTestRule: IntentsTestRule<AddTraderActivity> = IntentsTestRule(AddTraderActivity::class.java)
@Before
fun setup() {
mockServer = MockWebServer()
mockServer.start(8081)
}
@After
@Throws
fun tearDown() {
mockServer.shutdown()
}
@Test
fun buttonStart_click_delayResponse() {
// stub response
mockServer.enqueue(MockResponse()
.setResponseCode(200)
.setBodyDelay(5, TimeUnit.SECONDS))
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())
}
}
Как вы можете видеть, я использую setBodyDelay
для имитации длинного ответа.Но когда я запускаю тест buttonStart_click_delayResponse
, mockwebserver немедленно возвращает ответ на заглушку. не нужно ждать 5 секунд перед ответом на заглушку возврата.
здесь log:
05-05 14:54:59.263 D/OkHttp (14337): --> GET http://127.0.0.1:8081/trader/create?base=Base%20test"e=Quote%20test&sender=myproject.android.debug_0.0.8&key=541405052019 http/1.1
05-05 14:54:59.279 I/MockWebServer(14337): MockWebServer[8081] received request: GET /trader/create?base=Base%20test"e=Quote%20test&sender=myproject.android.debug_0.0.8&key=541405052019 HTTP/1.1 and responded: HTTP/1.1 200 OK
05-05 14:54:59.281 D/OkHttp (14337): <-- 200 OK http://127.0.0.1:8081/trader/create?base=Base%20test"e=Quote%20test&sender=myproject.android.debug_0.0.8&key=541405052019 (17ms, 0-byte body)