我在顶层初始化ViewModel,并在初始化时调用其init {}
块,然后该块调用我在@Before块中存根的方法。
尽管所有测试都通过了,但我在init {}
中调用的方法中引发了NullPointerExceptions。我试图在lateinit
块中ViewModel
@Before
。没用。
// AViewModelTest.kt
private val repoMock: ARepository = mock()
private val viewModel: AViewModel = AViewModel(repoMock)
@Before
fun setup() {
// method stubbing
`when`(repoMock.getSmth()).thenReturn(response)
}
// AViewModel.kt
constructor(repo: ARepository) {}
init {
onStartLoading(repo)
}
fun onStartLoading(repo: ARepository) {
val response = repo.getSmth()
handleResponse(response) // response is null here -> NullPointerException
}
答案 0 :(得分:0)
最后,@ Before中的lateinit
完成了该操作。发生问题是因为我在ViewModel中隐式引用了Android Context
。