Я разрабатываю приложение Android с использованием Kotlin. Я пишу интеграционные тесты для моего приложения, используя платформу Expresso. Теперь я пытаюсь смоделировать ClipData намерения обратного вызова onActivityResult. Я высмеиваю намерение, используя экспресс-намерение платформы Expresso.
Ниже приведена реализация моего метода обратного вызова onActivityResult.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Log.i(TAG, "Start handleGalleryActivityResult")
if (data?.clipData?.itemCount == null) {
return
}
if (data?.clipData?.itemCount as Int > 0) {
Log.i(TAG, "handleGalleryActivityResult: clipData count is greater than zero")
for (i in 0 until data?.clipData?.itemCount as Int) {
Log.i(TAG, "Processing index ${i}")
if (data?.clipData?.getItemAt(i)?.uri != null) {
val file: File = File(data?.clipData?.getItemAt(i)?.uri?.path)
Log.i(TAG, "Picked gallery file ${data?.clipData?.getItemAt(i)?.uri?.path}")
} else {
Log.i(TAG, "Picked gallery file at index ${i} is null")
}
}
}
}
Как видно из метода обратного вызова onActivityResult, Я получаю clipData для намерения.
Я пишу тест, имитирующий возвращенное намерение, следующим образом.
@Test fun filesAreUploadedToServerWhenPickedUpFromGallery() {
this.launchActivityWithIntent()
val resultData = Intent()
val result = Instrumentation.ActivityResult(Activity.RESULT_OK, resultData)
intending(IntentMatchers.hasAction(Intent.ACTION_PICK)).respondWith(result)
onView(withId(R.id.camera_image_btn_gallery)).perform(click())
//the rest of the code goes here
}
Как вы можете видеть в моем коде, я высмеиваю намерение быть возвращен вот так.
intending(IntentMatchers.hasAction(Intent.ACTION_PICK)).respondWith(result)
Мой вопрос: как я могу передать данные клипа в целях насмешки над этим?