Инъекции и издевательства над действиями третьих сторон по контракту для целей тестирования

#android-fragments #dependency-injection #mocking #android-espresso

Вопрос:

У меня есть Fragment . Внутри этого Fragment я открываю 3-ю партию Activity registerForActivityResult(CropImageContract()) .

Теперь я хочу проверить Fragment это . Особенно я хочу проверить, правильно ли обработан результат третьей стороны Activity .

Поскольку у меня нет доступа к третьей стороне Activity во время тестирования аппаратуры, я подумал о том, чтобы ввести и поиздеваться CropImageContract() , но я не знаю, как это сделать. Есть ли какие-либо идеи или альтернативные решения?

Это Fragment то, что я хочу проверить:

 class ProductDetailsFragment : Fragment() {  private var mBinding: FragmentProductDetailsBinding? = null   private val cropImageLauncher = registerForActivityResult(FakeCropImageContract()) { result -gt;  if (result.isSuccessful) {  // use the returned uri  val uriContent = result.uriContent  } else {  // an error occurred  val exception = result.error  }  }   override fun onCreateView(  inflater: LayoutInflater,  container: ViewGroup?,  savedInstanceState: Bundle?  ): View {  mBinding = FragmentProductDetailsBinding.inflate(  inflater,  container,  false  )  return mBinding!!.root  }   override fun onViewCreated(view: View, savedInstanceState: Bundle?) {  mBinding!!.contentProduct.productProductImageView.setOnClickListener { takePicture() }  }   private fun takePicture() {  cropImageLauncher.launch()  } }