2012-03-21 6 views
2

iOSアプリケーションのサーバーレスポンス(JSON)を模擬するベストプラクティスは何ですか?iOS向けスタブサーバーの作成(NSUrlConnectionの模擬)

バックエンドを作っている開発者(私ではない)がいて、疑似データを使用してユーザーテストを開始できるように、また単体テスト用に「模擬サーバー」を作成したいと考えています。

nsurlconnectionを「インターセプト」するフレームワークがあるので、実際にサーバーに手を届かせたくない場合は、自分のjsonレスポンスを注入できますか?現在私は、私のすべてのサーバーリクエストメソッドの中のフラグと、そのような醜いものを切り替えています。

答えて

2

サーバー通信の場合、私は自分自身の「サービス要求」クラスでNSURLConnectionを抽象化します。これは私のコードをサーバー固有のロジックとエラー処理から切り離しますが、応答データを嘲笑すると極端にとなることが判明したので、いいです。設定を介して模擬データを使用するように設定することも、@ wkhatchのコメントとして条件付きでコンパイルすることもできます。

+0

私は自分のサーバーリクエストクラスを持っています。それは、他のすべてのものからすべてのサーバーロジックを抽象化しています。このクラスでは、有効なデータを返すのは非常に簡単です。しかし、それは私の問題ではありません。私が本当に欲しいのは、カスタムJSON処理をテストすることです。 serverrequest抽象化でさえ、コードが生きているかどうか(nsurlを使うかどうか)やテスト(カスタム返されたデータを使うかどうか)をチェックしているので、コード自体はいつも醜いです。 – Msencenb

+0

Ok ... nvm前のコメント、私は十分に慎重に読んだことはありませんでした。私は自分自身でnsurlconnectionを抽象化してしまいました。そして、それが私に与えられたブロックに戻ってくる「偽の」nsurlresponseとnsdata(json)を構築することができます。 – Msencenb

0

プロトコルを定義し、依存するクラスでプロトコルを型として使用し、それを実装するいくつかの異なるクラスを作成できます。 1つはテスト用、1つはテスト用などです。次に、依存するコントローラの中で、あるいは切り替えが必要な場所で、ターゲットまたは設定前のprocを使用してどちらを使用するかを切り替えます。このようにプロトコルを使用している場合、あなたは好きなことを定義したい:

id<ProtocolName> myServerURLConnectionThing; 

これは確かにあなたがやりたいための唯一の方法ではありませんが、基本的に、すべてのインターフェイスを抽象化に降りてくるだろうあなたはどちらか一方の方法が必要です。 HTH

2

チェックNocillap、iOS版/ OSXの開発のためのクールなモックライブラリの1:これらの日の巨大なあるAFNetworking

stubRequest(@"POST", @"https://api.example.com/dogs.json"). 
andReturn(201). 
withHeaders(@{@"Content-Type": @"application/json"}); 

作品。