XCode单元测试和NSURLConnectionDelegate回调?

时间:2014-02-26 23:12:58

标签: objective-c xcode unit-testing

我正在为Xcode 5中的项目设置单元测试。在单元测试中,我触发一些将构建并向服务器发送HTTP请求的事件。即使我看到发送请求并接收响应(通过Charles Web Proxy),NSURLConnectionDelegate或NSURLConnectionDataDelegate中的任何代码似乎都没有执行,例如

– connection:didReceiveResponse:
– connection:didReceiveData:

我知道有很多关于单元测试异步代码的问题,但是我关心为什么我的HTTP请求被发送并接收响应但是我的委托在单元测试期间没有执行回调。在异步操作有时间完成之前,我确保测试没有完成执行。

感谢。

1 个答案:

答案 0 :(得分:0)

使用一些辅助方法包装您的网络代码并模拟它。您不希望在单元测试中点击网络,因为:

a)它会减慢你的单元测试

b)它会引入不稳定性(例如:网络或服务器发生故障)

一般情况下,您希望您的单元测试可重复,并将网络引入等式只会让您头疼。获取一些好内容的样子和一些不良内容(例如:404错误或您的应用可能遇到的其他情况)的示例。将这些数据文件放入单元测试项目中,然后让伪造的网络代码返回数据文件,而不是发出网络请求。