如何测试通过意图(Robolectric)是否成功打开了网页

问题描述 投票:0回答:1

我编写了以下代码,通过单击按钮在手机的浏览器中打开一个URL

val intent = Intent(Intent.ACTION_VIEW, Uri.parse(uriString))
startActivity(intent)

我正在尝试编写Robolectric测试,该测试仅在所需的网页打开时才能通过,但不确定如何执行。这可能吗?

android robolectric
1个回答
0
投票

我正在尝试编写Robolectric测试,只有在所需的网页已打开

这是不可能的,但是(这实际上是您应该测试的内容),您可以使用startActivityContext上检查是否Intent被调用 符合特定条件

[假设您已将代码设计为可测试的,则应具有采用ContextUriString的方法(或类)。我们将假设以下内容:

fun openLink(context: Context, link: Uri){
  val intent = Intent(Intent.ACTION_VIEW, link)
  context.startActivity(intent)
}

然后我们可以编写以下测试(注意:此示例使用mockito-kotlin):

@Test
fun `verify intent was broadcast`(){
  val context: Context = mock()
  val expectedLink = "https://google.com"
  val uri: Uri = mock()
  whenever(uri.toString()).thenReturn(expectedLink)
  tested.openLink(context, uri) // "tested" is the instance of your class under test
    verify(context).startActivity(
      argThat {
        this.action == Intent.ACTION_VIEW &&
            this.dataString!! == expectedLink
      }
    )
  }
© www.soinside.com 2019 - 2024. All rights reserved.