繁体   English   中英

如何在 Jetpack Compose 中测试带注释的字符串超链接点击?

[英]How do I test an annotated string hyperlink click in Jetpack Compose?

此答案演示了如何在带注释的字符串中嵌入链接并使其可点击。 这很好用,并使用正确的 URL 触发点击。 但是,我似乎无法编写单击带注释的文本以打开链接的测试。 有没有人成功编写过这样的测试? 我的生产代码与答案中的非常相似。 下面是我的测试代码:

@Test
fun it_should_open_terms_of_service_link() {
    val termsOfServiceText = getString(R.string.settings_terms)
    try {
        Intents.init()
        stubAnyIntent()
        composeTestRule.onNode(hasText(termsOfServiceText, substring = true)).performClick()
        assertLinkWasOpened(getString(R.string.settings_terms_link))
    } finally {
        Intents.release()
    }
}

看起来hasText(termsOfServiceText, substring = true)获取了整个带注释的字符串节点,而不仅仅是子字符串“服务条款”。 因此, on click 方法确实被触发,只是不在带注释的字符串中的正确位置。 如果需要,很乐意提供更多信息。 谢谢!

您可以在偏移处执行单击。 这将在水平尾端和垂直中间执行单击。

composeTestRule.onNode(hasText(termsOfServiceText, substring = true))
    .performGesture { click(percentOffset(.9f, .5f)) }

缺点是它使测试更加脆弱。

暂无
暂无

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

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