使用jetpack compose时在android测试中测试小吃栏
我正在使用 jetpack compose 并使用此代码来显示我的 Snackbar:
LaunchedEffect(true) {
viewModel.snackBar.collectLatest { message ->
scaffoldState.snackbarHostState.currentSnackbarData?.dismiss()
scaffoldState.snackbarHostState.showSnackbar(message = message)
}
}
通常,当我想要访问 compose 元素时,我在 modifier
中使用 testTag
。但 Snackbar 没有。那么我如何测试我的 Snackbar 是否显示特定文本?
我尝试使用:
composeRule.onNodeWithText(SNACKBAR_MESSAGE).assertIsDisplayed()
但它找不到任何节点。
I'm using jetpack compose and use this code to show my Snackbar:
LaunchedEffect(true) {
viewModel.snackBar.collectLatest { message ->
scaffoldState.snackbarHostState.currentSnackbarData?.dismiss()
scaffoldState.snackbarHostState.showSnackbar(message = message)
}
}
Normally, when I want to access to a compose element, I use the testTag
in modifier
. But the Snackbar does not have any. So how can I test that my Snackbar is shown with specific text?
I tried to use:
composeRule.onNodeWithText(SNACKBAR_MESSAGE).assertIsDisplayed()
but it can't find any node.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我遇到了同样的问题,最终采取了以下措施以使我的测试通过:
最重要的是包括
useUnmergedTree = true
I had the same issue, and ultimately resorted to the following in order to get my test to pass:
What was of critical importance was including
useUnmergedTree = true
我们可以在snackbar修饰符中传递testtag并断言它。
测试代码
We can pass the testtag in snackbar modifier and we can assert it.
Testing Code