Jump to Navigation

API服务中的mock server

mocking机制

调用端与被调用端并行开发的机制。

在被调用端(服务端)未完成开发时,可以提供模拟响应接口API,供调用端(客户端)测试使用。

API mocking模型

  • 客户端mocking,客户端测试代码中模拟server端API接口功能,不执行网络请求。
  • 服务端 mocking,客户端测试代码中发送真实网络请求,server端API接口返回模拟结果。

支持服务端mocking,并不影响客户端mocking的使用。

mocking类型

  • 预设值mocking,被调用端预先设定要返回的值。预设值又分为编译时与运行时两类
  • 0值mocking,返回值为语言提供的0值,如0, "", nil
  • 随机值mocking,返回值为语言提供的相应的随机值,随机整数,随机字符串

调用端想参数设置应该怎么办?

也许可以在服务程序目录再放个预设值json文件好了。

mocking实现

mocking类型,在服务端启动时指定。

一种是编译型mocking值,即打包编译进程序,mocking handler动态根据服务名查询结构响应。

存放位置: src/package/service.method.json

另一种运行时mocking值,即临时改变的mocking值,要设定文件路径规则,以便mocking handler能够读取到。

存放位置: 当前目录package.service.method.json

还有一种方式,可以把mocking值作为.proto中的service的可选属性,json字符串方式存储。

mocking的系统开关

系统支持了mocking功能后,还需要支持开启/关闭mocking功能。

目前考虑到以下几种mocking开关:

  • 命令行参数方式,这种需要启动新的API Server,启动时传递mocking参数
  • API参数方式,这种不需要启动新的API Server,但对API接口正常运行稍有影响,API接口接收到请求时需要判断是否提供mocking参数。
  • 动态切换API Server的mocking开关状态,一个类型server console的admin工具/服务。

mocking的端口

与实际的服务端口一致,实际执行的mock代码逻辑由上面的mocking开关方式实现的,与端口无关。

引用资源

http://www.infoq.com/cn/articles/mockito-design/

http://outofmemory.cn/tag/894/Mock

golang中使用mock测试API - 转

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Story | by Dr. Radut