I'm following this Google Codelab and at the page 8 (Task: End-to-End Testing with Data Binding), at step 8 (Write DataBindingIdlingResource) you have to create a file called DataBindingIdlingResource.kt
.
class DataBindingIdlingResource : IdlingResource {
[...]
}
private fun View.getBinding(): ViewDataBinding? = DataBindingUtil.getBinding(this)
/**
* Sets the activity from an [ActivityScenario] to be used from [DataBindingIdlingResource].
*/
fun DataBindingIdlingResource.monitorActivity(
activityScenario: ActivityScenario<out FragmentActivity>
) {
activityScenario.onActivity {
this.activity = it
}
}
/**
* Sets the fragment from a [FragmentScenario] to be used from [DataBindingIdlingResource].
*/
fun DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<out Fragment>) {
fragmentScenario.onFragment {
this.activity = it.requireActivity()
}
}
The problem:
is the last function fun DataBindingIdlingResource.monitorFragment
because fragmentScenario.onFragment
provides only onFragment(action: Nothing)
and not onFragment {}
.
How Can I solve this issue? Thanks.
fun DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<Fragment>) {
fragmentScenario.onFragment { fragment ->
this.activity = fragment.requireActivity()
}
}
This is working for me.