Mock ktor client `HttpRequestBuilder.() -> Unit` with Mockk - Stack Overflow

admin2025-04-26  4

I tried to mock the Ktor HttpClient.post(url, HttpRequestBuilder.() -> Unit) in my tests like this.

@Test
fun `submit report`() = runTest {
    val mockHttpClient: HttpClient = mockk()
    val mockResponse: HttpResponse = mockk()

    coEvery { mockResponse.status } returns HttpStatusCode.OK
    coEvery { mockResponse.body<HandlingResponse.Success>(any(TypeInfo::class)) } returns HandlingResponse.Success()
    val mockFunc: HttpRequestBuilder.() -> Unit = mockk(relaxed = true)
    coEvery { mockFunc.invoke(any())} returns Unit

    coEvery { mockHttpClient.post(any<String>(), mockFunc) } returns mockResponse

    val client = HandlingReportClient(mockHttpClient)
    val result = client.submitReport(report)
    result is HandlingResponse.Success
    assertEquals("OK", result.toString())
}

When running the test, it is blocked and always running and not finished.

转载请注明原文地址:http://anycun.com/QandA/1745599357a90999.html