我有一个发出请求的函数,它以字节为单位获取响应并写入文件。下面给出部分功能。
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
,andHttpResponse
是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
即它是空的。
我是 scala 和 mockito 的新手。我想我设置正确。如果我缺少任何东西,请指导我。