У меня есть функция, которая делает запрос получает ответ в байтах и записывает в файл. Часть функции приведена ниже.
val bytes = Http(url).timeout(connTimeout, readTimeout).method("GET").proxy(proxyUrl, proxyPort).asBytes.body
val dest = new File(filePath)
dest.createNewFile
val out = new FileOutputStream(destFile)
IOUtils.write(bytes, out)
IOUtils.closeQuitely(out)
Я пытаюсь выполнить модульное тестирование этой функции. Я использую mockito
и Http
это объект. Так что издеваться над ней невозможно. Но, с другой стороны, HttpRequest
и HttpResponse
являются case
классами и могут быть подделаны. Итак, я сделал это в тесте.
//Read bytes from test resource file
val bytes = Files.readAllBytes(Paths.get(testFile))
// Mock
val mockHttpReq = mock(classOf[HttpRequest])
val mocmHttpRes = mock(classOf[HttpResponse[Array[Byte]])
when(mockHttpReq.asBytes).thenReturn(mockHttpRes)
when(mockHttpRes.body).thenReturn(bytes)
Теперь, когда я вызываю реальную функцию, т.е. когда
Http(url).timeout(connTimeout, readTimeout).method("GET").proxy(proxyUrl, proxyPort).asBytes.body
на самом деле называется, я не получаю Byte
, то есть он пустой.
Я новичок в скале и мокито. Я думаю, что я все правильно установил. Если я что-то упустил, пожалуйста, ведите меня.