【问题标题】:How do I test an annotated string hyperlink click in Jetpack Compose?如何在 Jetpack Compose 中测试带注释的字符串超链接单击?
【发布时间】:2021-09-23 12:59:47
【问题描述】:

This answer 演示了如何在带注释的字符串中嵌入链接并使其可点击。这很好用,并使用正确的 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 方法确实被触发,只是不在带注释的字符串中的正确位置。如果需要,很乐意提供更多信息。谢谢!

【问题讨论】:

    标签: android android-jetpack-compose-text


    【解决方案1】:

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

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

    缺点是使测试更加脆弱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-10
      • 2022-11-27
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多