如何解决DialogFragment的FragmentScenario,未调用onCreateDialog
我想使用androidx.fragment:fragment-testing
lib测试DialogFragment。
我叫launchFragmentInContainer
和moveToState(Lifecycle.State.RESUMED)
,但是这个片段中没有叫onCreateDialog
。
@Test
fun `submit search - presenter state is changed`() {
val p: PinCatsPresenter = F.presenter(PinCatsPresenter.COMPONENT_ID)!!
launchFragmentInContainer<PinCatsDialog>().let { scenario ->
scenario
.moveToState(Lifecycle.State.RESUMED)
.onFragment { fragment ->
assertFalse(p.state.isFiltered)
fragment.dialog!!.findViewById<SearchView>(R.id.search_field).let {
it.isIconified = false
it.setQuery("ea",true)
}
awaitUi()
assertTrue(p.state.isFiltered)
assertEquals(3,p.state.count)
}
}
}
我调试了应用程序,并确保早于onCreateDialog
调用onResume
,但在此测试方案中未调用onCreateDialog
,因此fragment.dialog
为空。 / p>
应该调用什么FragmentScenario
,以便创建对话框?
解决方法
这在official documentation中有描述。我们需要调用launchFragment
而不是launchFragmentInContainer
:
launchFragment<PinCatsDialog>().let { scenario ->
scenario
.moveToState(Lifecycle.State.RESUMED)
.onFragment { fragment ->
// Code here
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。