Skip to content

Instantly share code, notes, and snippets.

@MikeFot
Created September 29, 2021 10:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MikeFot/49ea17539fb7ff4fc86f5d3c61f1051c to your computer and use it in GitHub Desktop.
Save MikeFot/49ea17539fb7ff4fc86f5d3c61f1051c to your computer and use it in GitHub Desktop.
Helper for ViewModel / Observable Tests
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
class LifecycleTestOwner : LifecycleOwner {
private val registry = LifecycleRegistry(this)
override fun getLifecycle(): Lifecycle {
return registry
}
fun onCreate() {
registry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
}
fun onResume() {
registry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME)
}
fun onDestroy() {
registry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY)
}
}
class MainViewModelTest : BaseMockitoLiveDataTest() {
@Rule
@JvmField
var instantTaskExecutorRule: TestRule = InstantTaskExecutorRule()
private lateinit var viewModel: MainViewModel
private lateinit var lifecycleTestOwner: LifecycleTestOwner
@Mock
private lateinit var destinationObserver: Observer<Boolean>
@Before
fun setUp() {
lifecycleTestOwner = LifecycleTestOwner()
lifecycleTestOwner.onCreate()
viewModel = MainViewModel(dependencyA)
viewModel.destinationLiveData.observe(lifecycleTestOwner, destinationObserver)
}
@Test
fun `test something`() {
// given
// when
lifecycleTestOwner.onResume()
viewModel.onStatusClicked()
// then
verify(destinationObserver).onChanged(true)
lifecycleTestOwner.onDestroy()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment