如何比@Before块更早地存根方法?

时间:2018-11-23 11:59:00

标签: android junit kotlin

我在顶层初始化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
}

1 个答案:

答案 0 :(得分:0)

最后,@ Before中的lateinit完成了该操作。发生问题是因为我在ViewModel中隐式引用了Android Context