OkHttp3是由Square贡献的HTTP客户端框架,主要用在Andorid中,但是由于其易用的API、强大的功能、请求的快速等特点,也被大量采用在后端开发领域。本系列文章讲述OkHttp3的基本使用、OkHttp3的高级功能以及OkHttp3源码的解析等,请持续关注。
本篇文章是此系列的第二篇。
Mock
mock在测试领域是很重要的一个概念。mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,创建用一个虚拟的对象以方便测试的测试方法。比如在Java中可以借助JMock、EasyMock等工具创建Java对象,帮助我们快速进行单元测试。
MockWebServer
MockWebServer则是OkHttp3提供的一个快速创建HTTP服务端的工具。当我们的服务需要依赖外部HTTP应用时,可以按照预期功能快速构建外部HTTP应用,加快开发流程,快速进行单元测试,完善代码。搭配OkHttp3使用时,可以测试我们自己编写的OkHttp3客户端代码。
目前Java版本的MockWebServer最后版本的Maven坐标如下,本编文章的代码示例均基于该版本。
com.squareup.okhttp3
mockwebserver
3.14.9
使用MockWebServer
基本示例
MockWebServer的使用很简单。
首先创建一个MockWebServer对象。
MockWebServer server = new MockWebServer();
然后创建响应内容。
MockResponse mockResponse = new MockResponse().setBody("hello, world!")
把响应内容放入MockWebServer对象。
server.enqueue(mockResponse);
启动MockWebServer。
try {
server.start(8080);
} catch (IOException e) {
e.printStackTrace();
}
高级功能
模拟弱网环境响应。
MockWebServer server = new MockWebServer();
String filePath = "C:\\Users\\weegee\\Downloads\\dm-algo-top10.pdf";
Buffer bodyBuffer = new Buffer();
bodyBuffer.readFrom(new FileInputStream(new File(filePath)));
MockResponse bigMockResponse = new MockResponse()
.ad