将 FragmentScenario 中的片段设置为从 DataBindingIdlingResource 使用的问题
Problems to sets the fragment from a FragmentScenario to be used from DataBindingIdlingResource
我正在关注 this Google Codelab 并在 第 8 页 (任务:使用数据绑定进行端到端测试),在 步骤8 (Write DataBindingIdlingResource) 你必须创建一个名为 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()
}
}
问题:
是最后一个函数 fun DataBindingIdlingResource.monitorFragment
因为 fragmentScenario.onFragment
只提供 onFragment(action: Nothing)
而不是 onFragment {}
.
我该如何解决这个问题?
谢谢。
我已经通过将定义更改为
解决了这个问题
fun <T : Fragment> DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<T>) {
fun DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<Fragment>) {
fragmentScenario.onFragment { fragment ->
this.activity = fragment.requireActivity()
}
}
这对我有用。
我正在关注 this Google Codelab 并在 第 8 页 (任务:使用数据绑定进行端到端测试),在 步骤8 (Write DataBindingIdlingResource) 你必须创建一个名为 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()
}
}
问题:
是最后一个函数 fun DataBindingIdlingResource.monitorFragment
因为 fragmentScenario.onFragment
只提供 onFragment(action: Nothing)
而不是 onFragment {}
.
我该如何解决这个问题? 谢谢。
我已经通过将定义更改为
解决了这个问题fun <T : Fragment> DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<T>) {
fun DataBindingIdlingResource.monitorFragment(fragmentScenario: FragmentScenario<Fragment>) {
fragmentScenario.onFragment { fragment ->
this.activity = fragment.requireActivity()
}
}
这对我有用。