Как заглушить методы раньше, чем блок @Before? - PullRequest
0 голосов
/ 23 ноября 2018

Я инициализирую свой ViewModel на верхнем уровне, и, когда он инициализируется, он вызывает свой блок init {}, который затем вызывает методы, которые я заглушаю в блоке @Before.

Хотя все тесты пройдены, NullPointerExceptionsбросается в методы, которые я вызываю в init {}.Я пытался 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 голосов
/ 26 ноября 2018

В конце концов, lateinit в @Before сделали это.Проблема возникла из-за того, что в моей ViewModel была неявная ссылка на Android Context.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...