0

I am using extention function from this post: https://stackoverflow.com/a/72111931/1305993

In my test I have:

@Before
fun setUp() {
    savedStateHandle = SavedStateHandle()
    savedStateHandle["areaId"] = 1L
    saveImageUseCase = Mockito.mock(SaveImageUseCase::class.java)
    repo = FakeRepository()
    viewModel = AreaEditViewModel(repo, savedStateHandle, saveImageUseCase)
}

@Test
fun setUpArea() = runTest {
    viewModel.callPrivateFunc("setUpArea", 2L)
}

In my viewModel I have:

private suspend fun setUpArea(areaId: Long) {
    repository.getAreaById(areaId).first() {
        savedStateHandle["area"] = it
        true
    }
}

When I run test I get: Callable expects 3 arguments, but 2 were provided. java.lang.IllegalArgumentException: Callable expects 3 arguments, but 2 were provided.

I cannot figure out what is that third parameter missing

RCH
  • 1,247
  • 1
  • 11
  • 16

1 Answers1

0

I needed to callSuspended instead of call

suspend inline fun <reified T> T.callSuspendedPrivateFunc(name: String, vararg args: Any?): Any? =
        T::class
            .declaredMemberFunctions
            .firstOrNull { it.name == name }
            ?.apply { isAccessible = true }
            ?.callSuspend(this, *args)
RCH
  • 1,247
  • 1
  • 11
  • 16