测试已测试 | ✓ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2017年5月 |
由Sean Wolter、Isaac Greenspan、Brock Boland、Ellen Shapiro、Isaac Greenspan、Carl Hill-Popper维护。
依赖于 | |
ILGHttpConstants | ~> 2.0 |
VOKBenkode | ~> 0.3 |
一个解析并返回模拟数据的 URL 协议。
创建一个名为 VOKMockData
的文件夹参考,将整个 VOKMockData
目录复制到您的测试应用程序包中,并将模拟数据文件放在那里。确定一个模拟数据项的正确文件名的一个简单方法是执行模拟 API 调用,并在日志中注意报道的缺失模拟数据文件。完整的命名规范在这里描述。
注意: 模拟数据文件的命名规范在 2.x 版本中已更改。 1.x 版本的模拟数据文件可能需要重命名才能与 2.x 版本配合使用,特别是对于具有主体的请求(例如,POST
请求),特别是当主体不是 application/x-www-form-urlencoded
时。
模拟数据文件可以有
.json
,它将以 Content-type: text/json
返回 HTTP/1.1 200 成功
,并包含 .json
文件的内容;或者.http
扩展名,以解析以下格式的 HTTP 响应示例 HTTP 响应
带有标题和响应体的 HTTP 响应。
HTTP/1.1 201 CREATED
Server: nginx/1.4.6 (Ubuntu)
Date: Thu, 02 Oct 2014 20:50:29 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept, Cookie
X-Frame-Options: SAMEORIGIN
Allow: POST, OPTIONS
{"id": 63, "auth_token": "50db3356e743fa3f1b790a8648fc15cc4bbf04a2", "phone_number": "+13125551214", "email": "[email protected]", "name": "Testy McTesterson", "role": "Customer"}
带有标题但没有主体的 HTTP 响应。注意末尾的空白行!
HTTP/1.1 202 Accepted
Content-Type: text/plain; charset=UTF-8
Date: Fri, 17 Oct 2014 14:12:46 GMT
Server: Apache-Coyote/1.1
Content-Length: 0
Connection: keep-alive
没有标题和主体的 HTTP 响应。注意末尾的空白行!
HTTP/1.1 202 Accepted
没有标题但有一个主体的 HTTP 响应。
HTTP/1.1 202 Accepted
{"favorite_dog_breed": "dogfish"}
为了使 NSURLSession
能使用 VOKMockUrlProtocol
,您必须将其类别插入到 NSURLSessionConfiguration
's protocolClasses
之中。
示例
Class mockURLProtocol = [VOKMockUrlProtocol class];
NSMutableArray *currentProtocolClasses = [self.sessionConfiguration.protocolClasses mutableCopy] ?: [NSMutableArray array];
[currentProtocolClasses insertObject:mockURLProtocol atIndex:0];
self.sessionConfiguration.protocolClasses = currentProtocolClasses;
为了在模拟和实时之间切换,您还可以通过仅移除它来取出 Mock URL 协议
Class mockURLProtocol = [VOKMockUrlProtocol class];
NSMutableArray *currentProtocolClasses = [self.sessionConfiguration.protocolClasses mutableCopy];
[currentProtocolClasses removeObject:mockURLProtocol];
self.sessionConfiguration.protocolClasses = currentProtocolClasses;
当将 VOKMockUrlProtocol
建立为框架(通常与 Swift 一起使用)时,请确保调用 setTestBundle:
类方法并将您的测试包传递给它。因为默认行为是回退到当前类的包,所以它会检查框架的包而不是测试包,这样将无法正常运行。