我正在开发一个 iOS 应用程序,我正在尝试通过测试驱动开发来完成它。我已经阅读了很多关于这个主题的内容,我在一本书中遇到的一个问题是测试应该是快速、可重复和可靠的。因此,在为网络代码编写测试时,测试应该“模拟”网络,以便无论网络可用性如何都可以执行它。
在我的代码中,我有一个方法可以使用 URL 从 Internet 检索图像,使用 NSData 中的 dataWithContentsOfURL 对其进行缩放并将其存储在文件系统中:
+ (void) getImage:(NSString *)imageUrl {
UIImage *image = [UIImage imageWithData:
[NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]];
// Scale image
// Save image in storage
}
我的问题是:什么是测试这种方法的好方法,以便在代码正确时测试通过,在不正确时失败,而不考虑可能的网络故障?
目前在我的测试中,我忽略了该方法需要连接的事实,只是期望结果是正确的。但是,我已经看到当我的测试套件增长时这会成为一个问题,因为它们已经花费了相当长的时间来运行。更重要的是,我不希望我的测试仅仅因为没有良好的网络连接而失败,因为我相信这不是他们的目的。我很感激任何建议。