私は iOS アプリを開発しており、テスト駆動開発でそれをやろうとしています。私はこのテーマについて多くのことを読んできましたが、本で出会ったことの 1 つは、テストは高速で、繰り返し可能で、信頼できるものであるべきだということです。結果として、ネットワーク コードのテストを作成するときは、ネットワークの可用性に関係なく実行できるように、テストでネットワークを「シミュレート」する必要があります。
私のコードには、URL を使用してインターネットから画像を取得し、スケーリングして、NSData の dataWithContentsOfURL を使用してファイル システムに保存するメソッドがあります。
+ (void) getImage:(NSString *)imageUrl {
UIImage *image = [UIImage imageWithData:
[NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]]];
// Scale image
// Save image in storage
}
私の質問は、ネットワーク障害の可能性を考慮せずに、コードが正しい場合にテストに合格し、そうでない場合に失敗するように、このメソッドをテストするための良いアプローチは何でしょうか?
現在、私のテストでは、メソッドに接続が必要であるという事実を無視しており、結果が正しいことを期待しています。ただし、テスト スーツが大きくなると、実行にかなりの時間がかかるため、これがどのように問題になるかは既にわかっています。さらに重要なことは、ネットワーク接続がうまくいかないという理由だけでテストが失敗することを望んでいないということです。提案をいただければ幸いです。