繁体   English   中英

DialogFragment 的 FragmentScenario,未调用 onCreateDialog

[英]FragmentScenario of DialogFragment, onCreateDialog not called

我想使用androidx.fragment:fragment-testing lib 测试 DialogFragment。 我调用了launchFragmentInContainermoveToState(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为空。

我应该在FragmentScenario调用什么才能创建我的对话框?

这在官方文档中有描述。 我们需要调用launchFragment而不是launchFragmentInContainer

   launchFragment<PinCatsDialog>().let { scenario ->
       scenario
           .moveToState(Lifecycle.State.RESUMED)
           .onFragment { fragment ->
               // Code here
           }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM