В моей ViewModel у меня следующее веселье:
fun onTitleClick(titleName: Int) {
when (titleName) {
R.string.about_terms_service -> {
termsOfServiceItemClickEvent.postValue(
ViewModelEvent(
WebViewFragment.newBundle(
url = TERMS_LINK,
title = "Terms of Service"
)
)
)
}
R.string.about_open_source_licenses -> licenseItemClickEvent.postValue(ViewModelEvent(R.string.about_open_source_licenses))
}
}
И у меня следующий класс событий:
open class ViewModelEvent<out T>(private val content: T? = null) {
var hasBeenHandled = false
private set
/**
* Returns the content and prevents its use again.
*/
fun getContentIfNotHandled(): T? {
return if (hasBeenHandled) {
null
} else {
hasBeenHandled = true
content
}
}
/**
* Returns the content, even if it's already been handled.
*/
fun peekContent(): T? = content
}
В классе событий у меня следующий fun getContentIfNotHandled()
с некоторыми логами c , Как я могу проверить эту логику c мои тесты Robolectri c?
Также вот некоторый код из моего фрагмента:
viewModel.licenseItemClickEvent.observe(this, Observer<ViewModelEvent<Int>> {
it?.getContentIfNotHandled()?.let { activity?.addFragment(LicensesFragment()) }
})