在团队比较紧密配合的情况下,接口文档先行,移动端开发玩接口,自行mock数据,联调查看效果。

我这里查阅了一些资料,整理了三种方式。

一、charles

1.本地文件模拟数据
不灵活、规模小、没有随机性、很难测试出边界情况
2.远程服务模拟数据
需要占用服务器资源,消耗一些测试接口的开发资源

Tools–>Map Local–>Enable Map Local —>add —>

Map From
Protocol:https
host:www.baidu.comMap To
Local Path:xxx

具体详细的内容,可以查询下相关资料

二、Mock.js

这种方式是从一本工具书《iOS性能优化实战》上看到的,自己实践了一下,觉得相对来说,这种方式最完美,笔者也更喜欢。

通过Node.js(JavaScript运行环境)、
Express(基于Node平台的web开发环境)、
Mock.js(模拟数据结构,生成随机JavaScript库),很容易实现一个本地数据模拟服务。

安装过程:可以通过homebrew进行安装
Node.js: brew install node
Mock.js: npm install mockjs
Express: npm install express
https://www.npmjs.com/package/express

过程:

1.express demo
2.cd demo
3.新建一个MockData.js文件(代码如下)
4.run code MockData.js文件
5.浏览器访问:http://localhost:8001/people

代码

var express = require('express');
var Mock = require('mockjs');
var app = express();
var data = Mock.mock ({'peoples|1-10':[{'name':"@cname",'age|10-40':0}]
})
app.get('/people',function(req,res){res.send(JSON.stringify(data));
})var server = app.listen(8001, function(){})

大家也可以买一本书看一下,感觉写的还不错,作为工具书很方便

三、GYHTTPMock

这个是个第三方,但是要写一部分代码,看起来就很不美观

只需要引入工程添加request限制条件,并制定返回json即可。

1.pod 'GYHttpMock'
2.在需要拦截的请求之前创建正确的mockRequest:创建一个最简单的 mockRequest。截获应用中访问 www.weread.com 的 get 请求,并返回一个 response body为空的数据。
mockRequest(@"GET", @"http://www.weread.com");创建一个拦截条件更复杂的 mockRequest。截获应用中 url 包含 weread.com,而且包含了 name=abc 的参数
mockRequest(@"GET", @"(.*?)weread.com(.*?)".regex).withBody(@"{\"name\":\"abc\"}".regex);创建一个指定返回数据的 mockRequest。withBody的值也可以是某个 xxx.json 文件,不过这个 json 文件需要加入到项目中。
mockRequest(@"POST", @"http://www.weread.com").withBody(@"{\"name\":\"abc\"}".regex);andReturn(200).withBody(@"{\"key\":\"value\"}");创建一个修改部分返回数据的 mockRequest。这里会根据 weread.json 的内容修改正常网络返回的数据
mockRequest(@"POST", @"http://www.weread.com").isUpdatePartResponseBody(YES).withBody(@"{\"name\":\"abc\"}".regex);andReturn(200).withBody(@“weread.json");

优势:


1.支持部分替换 HTTP Response,也就是可以修改真实网络返回的数据,
这是相对于其它 HttpMock 独有的核心功能。2.客户端引入 GYHttpMock 后,只需一行代码就可以截获指定请求,
并返回所需要的数据。不需服务端支持,也不需要建立本地HTTP Server。3.支持 NSURLConnection, NSURLSession,AFNetworking 以及所有采用 iOS Cocoa URL 加载方式的网络框架。
4.支持正则匹配 HTTP Request,这样一条 httpMock 可以同时支持多个请求。
5.mocked response 支持 json 内容的文件。一般情况下,mocked response 直接用 NSString 表达会比较清晰,
但是返回内容比较多的情况下,因为转义符的原因,将内容以 json 格式写入文件会更容易些。

例子:
DYHTTPMock.h

#import <Foundation/Foundation.h>@interface DYHTTPMock : NSObject+ (void)start;@end

DYHTTPMock.m

#import "DYHTTPMock.h"
#import <GYHttpMock/GYHttpMock.h>@interface DYHTTPMock()@end@implementation DYHTTPMock#pragma mark - Init Methods#pragma mark - Public Methods+ (void)start {
#ifdef DEBUGmockRequest(@"GET", @"(.*?)(/project/product/detail)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/project/enregister/relevant/info)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/project/enregister/together/list)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/project/enregister/together/relevant/info/byTid)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/project/product/detail/base)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/user/login/getVCode)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"POST", @"(.*?)(/user/login)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"POST", @"(.*?)(/project/enregister/ope)(.*?)".regex).andReturn(200).withBody([self genJSONString:@""]);mockRequest(@"GET", @"(.*?)(/trade/remittance/info)(.*?)".regex).andReturn(200).withBody([self genJSONString:@"汇款信息"]);#endif
}#pragma mark - Private Methods+ (NSString *)genJSONString:(NSString *)name {NSBundle *bundle = [NSBundle mainBundle];NSString *path = [bundle pathForResource:name ofType:@"json"];NSAssert(path.length, @"HJHTTPMockManager :: file:%@ not exist", name);NSString *bodyString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//校验NSError *__autoreleasing *error = nil;id json = [NSJSONSerialization JSONObjectWithData:[bodyString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:error];if (!json) {NSAssert(json, @"HJHTTPMockManager :: response string is invaild json");}return bodyString;
}@end

iOS数据模拟 Mock方案相关推荐

  1. 花椒接口Mock方案

    什么是Mock? Mock是指在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为.早期mock多被用于单元测试/接口测试中,被测试对象依赖其他对象,且这些对象的构造复杂 ...

  2. iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET

    iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex

  3. iOS热更新方案(过AppStore审核)

    一.查阅了几种热更新的方案, JSPatch . Aspects . Stringer . TTPatch .Mango.OCRunner.下面用一个表格对这几种方案分别做个对比:        方案 ...

  4. 沉浸式iOS热更新方案

    沉浸式iOS热更新方案 iOS动态热更技术使得用户无需重新下载APP,就能修复线上BUG,提高用户体验,为APP快速迭代开发提供良好支持.此前业界的热更方案,多数是利用脚本语言修改Objective- ...

  5. 针对多状态订单详情的前端mock方案

    背景 闲鱼作为国内最大的二手交易电商平台,有着验货宝/省心卖/优品等有着闲鱼特色的交易链路,而作为交易链路的闭环,一旦形成有效订单,就会有对应的订单详情页,订单详情页往往承载着复杂的交易状态的变化.以 ...

  6. 从实习经历中总结,项目中常见 Mock 方案

    文章目录 前言 项目中常见 Mock 方案 代码侵入 拦截 Ajax 请求 接口管理工具 Swagger YAPI RAP2-DELOS moco 总结 JSON Server 起飞教程 安装 启动服 ...

  7. 深思iOS应用加固方案

    方案简介 深思iOS应用加固方案(VirboxProtector)基于虚拟机保护技术,无需启用 Bitcode,无需替换 Xcode 编译器,可以从可执行文件中直接解析出 ARM 指令,然后进行代码混 ...

  8. swift 组件化_打造完备的iOS组件化方案:如何面向接口进行模块解耦?

    作者 | 黑超熊猫zuik,一个修行中的 iOS 开发,喜欢搞点别人没搞过的东西,钻研过逆向工程.VIPER 架构和组件化. 关于组件化的探讨已经有不少了,在之前的文章 iOS VIPER架构实践(三 ...

  9. IOS 远程测试方案

    前言 iOS开发的测试一直是令人头疼的问题.app开发的短周期和高效率的要求注定了一款app,特别是小公司的app,不会留给开发人员很多测试的时间.而在测试时往往又遇到crash报告提交困难,测试人员 ...

最新文章

  1. Squid3反向代理安装与配置
  2. [Swift]LeetCode218. 天际线问题 | The Skyline Problem
  3. java css隔行变色_JS+CSS实现Li列表隔行换色效果的方法
  4. python 优秀文章索引
  5. YbtOJ#532-往事之树【广义SAM,线段树合并】
  6. 【BZOJ2754】【codevs2403】喵星球上的点名,AC自动机与STL的狂欢
  7. Android学习笔记---29_构建soap协议内容,发送xml数据和调用webservice,手机号码归属地查询器
  8. [LeetCode-JAVA] Remove Duplicates from Sorted Array II
  9. 我应关注的AEC算法细分
  10. 使用Source Insight查看Android Framework 源码
  11. python爬虫微博24小时热搜_GitHub - Writeup007/weibo_Hot_Search: 微博爬虫:每天定时爬取微博热搜榜的内容,留下互联网人的记忆。...
  12. Java垃圾回收(GC)机制
  13. OpenSesame免费提供新冠病毒防疫准备和远程工作培训
  14. 《纽约时报》畅销书作家发布新的COVID安全旅行提示电子书
  15. 「win10右键菜单修改名称」
  16. mysql:innodb存储引擎之表结构
  17. 倍福--ip地址修改
  18. Android分包MultiDex原理详解
  19. 菜鸟学exchange之五:监控exchange 邮件系统和队列查看器
  20. 基于opencv的人脸检测

热门文章

  1. yocs_velocity_smoother速度平滑库知识
  2. 【嵌入传播】Embedding Propagation: Smoother Manifold for Few-Shot Classification
  3. IPv6技术详解:基本概念、应用现状、技术实践(上篇)
  4. 一些学习,有趣,电影,资源网址
  5. 学术之声 | 专访邵俊教授:区块链用技术保证在链上说话算话
  6. Linux 重新加载 nginx 配置命令
  7. android网络转圈,网络请求时显示正在请求转圈
  8. ESP32解析ble蓝牙手柄信号,直接通讯,用于控制机器人小车机械臂等
  9. Delphi数据库处理(感谢:neverdeath)
  10. 联通数据采集交换平台BDE的配置