2015-10-08 9 views
10

Swift 2.0で自動UIテストを作成する際にリクエストを模擬する方法はありますか?私が知る限り、UIテストは他の機能とは独立している必要があります。レスポンスに応じてUIの動作をテストするために、サーバリクエストからのレスポンスを模擬する方法はありますか?たとえば、サーバーが停止している場合は、UIテストが実行されます。簡単な例として、ログインの場合は、パスワードが失敗した場合はモックが表示され、ログインが成功した場合は次のページが表示されます。Mock APIがXcode 7のSwift自動UIテストを依頼します

+0

さらに適切なタグを追加しました。 – Liam

+0

私は@JoeMasilottiが正しいと思います。しかし、私の生産コードでは、モックを含むことについて少し神経質になります。 –

+0

テストコードからアプリケーションコードにデータを動的に注入するのに便利なSBTUITestTunnelをチェックすることができます。私の答えを見る[ここ](http://stackoverflow.com/questions/36768883/how-do-i-mock-network-requests-in-xcode-ui-tests-while-the-tests-are-running/36909859 #36909859) –

答えて

6

現在の実装では、UIテストではが直接ではありません。フレームワークがコードに直接持っている唯一のインターフェースは、launch arguments/environmentです。

このコンテキストでは、アプリが特定のキーまたは値を検索するように設定し、一部の機能を切り替えることができます。たとえば、MOCK_REQUESTSキーが設定されている場合は、HTTPClientの代わりにMockableHTTPClientをネットワークレイヤーに挿入します。私はsetting the parametersについて書いていて、NSHipsterにはhow to read themという記事があります。

しかし、理想的ではありませんが、技術的には、あなたが探しているものをいくつかの足取りで達成することは可能です。

ここには私がまとめたtutorial on stubbing network data for UI Testingです。これは、これを実行して実行するために必要なすべてのステップを案内します。

0

何らかの理由でプロダクション環境にしようと思っているのであれば、Charles Proxyのようなサードパーティのソリューションの使用を検討することができます。

マップローカルツールを使用すると、特定のエンドポイントからのコールをマシン上のローカルファイルにルーティングできます。ローカルファイルに、返信したい応答を含むプレーンテキストを渡すことができます。あなたの例あたり:

あなたのログインは、あなたがルートコンピュータに保存されたファイルにそのエンドポイントを打つの呼び出しはすなわちmappedlocal.txt

できるマップローカルツールを使用してチャールズにエンドポイントyoursite.com/login

を打ちます

mappedlocal.txtは、次のテキスト
HTTP/1.1チャールズが実行されている場合は404が

を失敗して、あなたの応答が404エラーで帰ってくるこのエンドポイントをヒット含まれています。

チャールズでは「マップリモート」と呼ばれる別のオプションを使用して、モックサーバー全体を構築することもできます。モックサーバーは、呼び出しや応答を自由に処理できます。これはまさにあなたが探しているものではないかもしれませんが、他人を助けるかもしれないオプション、そして私は自分自身を使います。

関連する問題