Раньше у меня была такая функция, как
suspend fun loadSubmissionItems(submissionIds: List<String>): List<Submission> {
return submissionIds.mapNotNull {
submissionRepository.loadSubmissionBy(it)
}
}
}
override fun onUpdatedItem(item: SubmissionItemRelation) {
item.value?.let { list ->
viewModelScope.launch {
submissionItems.value = relationProxy.loadSubmissionItems(list)
}
}
}
, и я тестировал / издевался вот так
relationProxy = mock {
onBlocking { loadSubmissionItems(any()) }.thenReturn(mockedList)
}
И это работает. Но я изменил код, как показано ниже:
fun loadSubmissionItems(
submissionIds: List<String>,
onEnd: (List<Submission>) -> Unit
) {
viewModelScope.launch {
onEnd(submissionIds.mapNotNull {
submissionRepository.loadSubmissionBy(it)
})
}
}
override fun onUpdatedItem(item: SubmissionItemRelation) {
item.value?.let { list ->
relationProxy.loadSubmissionItems(list) { result ->
submissionItems.value = result
}
}
}
Как я могу издеваться над анонимной функцией?
Я пробовал это, но у меня есть nullPointer для моего ожидаемого результата
val onEndMock = mock<(List<Submission>) -> Unit>()
relationProxy = mock {
on { loadSubmissionItems(any(), any()) }.then { onEndMock.invoke(listOf(fakeSubmission)) }
}