Как смоделировать POST-запрос с макетом и топливом в котлине? - PullRequest
0 голосов
/ 13 ноября 2018

Я делаю http запросы в котлине с библиотекой топлива.Я хочу проверить этот код, используя библиотеку mockk.Я понял, как издеваться над http-запросами.Ниже приведен код для этого.

    val client = mockk<Client>()
    every { client.executeRequest(any()).statusCode } returns 200
    every { client.executeRequest(any()).responseMessage } returns "test"
    every { client.executeRequest(any()).data } returns "abc".toByteArray()

    FuelManager.instance.client = client

    assertEquals("abc" , testHttpRequest())

Мне это не нравится any() здесь.Я хочу быть конкретным о методе http и URL.Я хотел бы вернуть конкретные ответы на основе вызываемого URL-адреса и используемого метода http.

Я подумал, что мог бы сделать следующее

    val req = Request(Method.POST, "my/test", URL("https://testRequest.com"), timeoutInMillisecond = 3000, timeoutReadInMillisecond = 3000)

    every { client.executeRequest(req).statusCode } returns 200
    every { client.executeRequest(req).responseMessage } returns "OK"
    every { client.executeRequest(req).data } returns "abc".toByteArray()

    FuelManager.instance.client = client

Но я получаю следующую ошибку.

io.mockk.MockKException: no answer found for: Client(#1).executeRequest(--> 
https://testRequest.com/my/test
"Body : abc"
"Headers : (3)"
Accept-Encoding : compress;q=0.5, gzip;q=1.0
Content-Type : application/json
Authorization : Basic xxx)

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 15 ноября 2018

Попробуйте использовать следующее:

 every { client.executeRequest(req) } returns <mock object>
...