## Mock简介 * Mock是模拟对象的意思,用于进行被测组件对外依赖的模拟。 * Mock 是测试驱动开发必备之利器, 只要有状态, 有依赖, 做单元测试就不能没有 Mock * 在 API 或 集成测试的时候, 如果依赖于第三方的 API, 也时常使用 mock server 或 mock proxy ## 如何使用 Sword已经完美集成了Mock,可以很方便地模拟动静态数据,也可以模拟网络延时,达到对接服务端的真实性与准确性。下面我们来看下如何在Sword中使用Mock 1. 我们到mock文件夹下创建demo.js ![](https://box.kancloud.cn/ec4f17cae3c7d496c811ab138770ba56_1628x848.png) 2. function则是创建一个mock函数,设定接口返回值 3. 然后将其export,定义为GET类型的接口,并且接口请求地址为 '/api/demo/detail' 4. 因为Sword默认端口为8888,所以访问的地址为 http://localhost:8888/api/demo/detail 5. 打开postman(一种很好用的接口调试工具,大家也可选型其他类型的工具),调用接口查看返回成功,一个mock接口创建成功 ![](https://box.kancloud.cn/9298ba76984d31a25c67533392f7f08b_1220x804.png) <br> ## Mock进阶 只是简单的返回一个固定的数据,没有网络请求延时,这样无法达到我们一些复杂业务场景的需求,所以我们需要对其进行更深一层次的定制。 ### 根据请求参数动态判断,返回mock数据 1. 我们给mock接口传入数据,根据数据来动态展示接口返回 2. 代码如下操作,增加请求参数的动态获取 ![](https://box.kancloud.cn/3de71e1883876d6cde6987c76222f7c9_958x348.png) 3. 主要就是根据req.query来获取传递的参数,打开postman查看一个简单的动态接口已经诞生 ![](https://box.kancloud.cn/8e8ff1b97ac15556ab94c8ee00c670b2_1054x850.png) 4. 优化返回数据 ![](https://box.kancloud.cn/dce7e7847b0eb98f78ec0b3e9b640fb5_1112x408.png) 5. 再次打开postman调用接口发现返回效果与服务器接口一致 ![](https://box.kancloud.cn/4fe193eb184cb8097d44163a5914bfd6_936x942.png) <br> ### 引入roadhog-api-doc模拟网络请求延时 1. mock数据模拟完毕后,发现请求耗时非常小,此时如果想模拟真实环境的网络延时,可以引入roadhog-api-doc模块,具体代码如下,我们将延时改为1秒 ![](https://box.kancloud.cn/6596f9e7b635a287575b692c0ed1f06a_1112x538.png) 2. 打开postman发现网络延时生效 ![](https://box.kancloud.cn/714eaeaf2cc5e642614d87d0951b3c58_1934x972.png)