我正在编写一个天气应用程序,我创建了一种天气模型,它可以执行所有计算、获取数据等。在创建 ViewControllers 之前,我想为我的模型编写一些单元测试以确保一切正常正常工作(正在以预期的格式获取天气,天气正在正确刷新等)。
现在我很想充满信心地进行单元测试并测试平等,例如:
STAssertEquals([[testableModel weatherDictionary]objectForKey:@"current_conditions"], @"Sunny", @"The weather should be sunny.");
...但是,唉,大自然的变化如此之快。另外,(并纠正我的问题),我认为我在进行单元测试时无法连接到 Internet(...?)(无论如何,这并不重要。)
所以,我在我最喜欢的网站上搜索,发现了这个问题:如何对 NSURLConnection 委托进行单元测试?
它提供了很多信息,但现在我有一个问题。当我调用一个调用 NSURLConnection 委托方法的方法时,例如:
[myBeautifulWeatherModel getTheWeather];
...我如何提供模型(即实现 NSURLConnection 委托方法的 myBeautifulWeatherModel)数据?当模型在这个委托方法中接收到它的数据时,它会做一些 JSON 解析:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection;
我的第一个想法是获取 Wunderground 发回的 JSON 数据,然后更改一些键,使它们与预期数据匹配并输入。但问题是我将如何输入该响应?
我知道 NSURLConnection 将调用 3 个必需的委托方法。我觉得我需要“伪造”以下内容:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
但同样,我对如何输入它并让这个模型认为它连接到互联网有点困惑。