如何解决仅为这样的一个动作创建LiveDataObserver是必要的吗?
我有下一段代码,我想为下一个按钮添加单元测试,一个朋友说:“创建一个实时数据观察器仅用于测试每个功能实在太多了”。问题是我至少有10个按钮,这些按钮具有诸如意图,计算,发送数据等不同的动作。每个按钮做不同的事情,一些代表动作,另一些代表事件。
图像只是其中之一。但是问题是,如何使其具有可测试性,我理解为了进行测试,我需要在viewModel上创建一个方法,并仅使LiveData返回视图并在片段中注册观察者,以使其具有意图。在我看来,这听起来像是“走来走去”。如果视图不需要“观察”任何东西,而只是通知视图做某事,为什么我应该只有一个Intent观察者。
与其他10个按钮相似。我真的需要创建一个liveData才能测试每个按钮吗?拥有一个观察者并立即回到视图只是为了做这些事情听起来有点夸张。有更好的方法吗?
buttonContainer.setOnClickListener {
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
val uri: Uri = Uri.fromParts(SCHEME,activity?.packageName,null)
intent.data = uri
startActivity(intent)
}
// Each of those make one action,but to have an observer for each,don't sounds good,// why whould I need an observer only for one action,but if don't,I couldn't test it
liveDataAction1.value = true
liveDataAction2.value = true
liveDataAction3.value = true
liveDataAction4.value = true
liveDataAction5.value = true
解决方法
您可以拥有一个LiveData
,而不是拥有多个LiveData<Consumable<Event>>
。
消耗品只是一种模式,可确保您的事件仅消耗一次(Read this for more information)
然后将您的Event
定义为:
sealed class Event {
class OpenDetail(id: Long): Event
object OnSuccess(): Event
....
}
然后在测试中,您只需验证调用方法x,就会导致发出Event
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。