NSURLConnectionVCR
提供了一种简便的方法来记录和回放NSURLConnection
请求/响应。通过去除对外部Web服务器的依赖,您的测试将运行得更快且更加确定。别担心,不需要更改您现有的基于NSURLConnection
的代码。NSURLConnectionVCR
通过在运行时通过'混入'实现来挂钩到NSURLConnection
。
本项目受到Myron Marston的Ruby on Rails VCR的启发。
首先,启动VCR并指定一个存储路径
[NSURLConnectionVCR startVCRWithPath:@"fixtures/vcr_cassettes" error:nil];
然后使用NSURLConnection
执行一个请求
NSURL* url = [NSURL URLWithString:@"http://api.example.com/fancy.json"];
NSURLRequest* request = [NSURLRequest requestWithURL:url];
NSHTTPURLResponse* response = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
首次运行这段代码,它将执行请求并将响应存储在指定的路径的文件中。再次运行,VCR将回放从磁盘记录的响应,无需调用Web服务器。
完成测试后,可选地关闭VCR
[NSURLConnection stopVCRWithError:nil];
要求
只需将NSURLConnectionVCR.m
和NSURLConnectionVCR.h
添加到您的项目中。没有外部依赖,当然除了Foundation框架和Objective C运行时。
NSURLConnectionVCR
为每个唯一的请求创建一个文件,并将其存储在指定的路径。提供的Quicklook插件使基本检查这些缓存文件变得方便。缓存文件基本上是一个包含请求完成后返回的NSURLResponse
和NSData
的存档。缓存文件的名称是原始NSURLRequest
的MD5摘要。Quicklook预览显示响应数据,并将原始URL和HTTP状态码作为预览窗口的标题。
版权所有 (c) 2012, Martijn The。保留所有权利。
在以下条件下,允许重新分发和使用源代码和二进制形式,无论是修改后还是未经修改:
源代码的重新分发必须保留上述版权声明、本许可条款以及以下免责声明。以二进制形式进行重新分发时,必须在文档和/或其他随分发提供的材料中重新复制上述版权声明、本许可条款以及以下免责声明。此软件由版权所有者和贡献者提供,"原样"提供,不提供任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性保证。在任何情况下,版权所有者或贡献者不应对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是由于何种原因引起的,无论根据何种责任理论,包括因使用此软件而引起的,即使已告知可能发生此类损害。