Как сделать coVerifyOrder для aliveata.postValue (any ()) - он возвращает io.mockk.MockKException: не удалось найти совпадающую подпись для - PullRequest
0 голосов
/ 01 ноября 2019

Сценарий - Привет, я новичок в тестировании с использованием mockk. Я хочу проверить порядок, в котором методы вызываются в viewmodel. И я хочу протестировать livedata.postValue в verify block {}, но mockk дает исключение . Пожалуйста, также помогите мне понять значение исключения

MyViewModel.kt

fun doWork(showError: Boolean = false) {
    launch {
        val result = getImageUseCase.getImages()
        if (!showError) {
            withContext(uiDispatcher) {
                liveDataResponse.postValue(LiveDataResult.success(Response(result)))
            }
        } else {
            throw Exception("Unknown")
        }
    }
}

MyViewModelTest.kt

@Test
fun verifyOrderOfMethodExecution(){

    coEvery { getImageUseCase.getImages() } returns 1
    myViewModel.doWork()
    coVerifyOrder {
        getImageUseCase.getImages()
        myViewModel.liveDataResponse.postValue(any())
    }
}

Исключение -

io.mockk.MockKException: Failed matching mocking signature for
SignedCall(retValue=, isRetValueMock=true, retType=class kotlin.Any, self=GetImageUseCase(usecase#1), method=getImages(Continuation), args=[Continuation at com.rahullohra.lab.MyViewModelTest$verifyOrderOfMethodExecution$2.invokeSuspend(MyViewModelTest.kt:79)], invocationStr=GetImageUseCase(usecase#1).getImages(continuation {}))
left matchers: [any()]
...