私は気象アプリケーションを作成しており、すべての計算、データのフェッチなどを行う一種の気象モデルを作成しました。ViewController を作成する前に、モデルの単体テストをいくつか作成して、すべてが適切であることを確認したいと考えていました。正常に動作しています (天気が期待される形式で取得されている、天気が正しく更新されているなど)。
今、私は自信を持って単体テストを行い、次のように等しいかどうかをテストしたいと思います:
STAssertEquals([[testableModel weatherDictionary]objectForKey:@"current_conditions"], @"Sunny", @"The weather should be sunny.");
...しかし悲しいことに、母なる自然は急速に変化します。また、(訂正します)単体テスト中はインターネットに接続できないと思います(…?)(どちらでも構いません。)
そこで、私のお気に入りの Web サイトを検索したところ、次の質問が見つかりました。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;
しかし、繰り返しになりますが、どのようにそれをフィードして、このモデルにインターネットに接続されていると思わせるかについて、少し混乱しています。