DialogFragment的FragmentScenario,onCreateDialog未被调用

4
我想使用 androidx.fragment:fragment-testing 库来测试 DialogFragment。 我调用了 launchFragmentInContainermoveToState(Lifecycle.State.RESUMED),但是这个 fragment 中的 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中调用什么方法,以便创建我的对话框?

1个回答

2

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接