Swift で記述された UITests のネットワーク リクエストをスタブする方法はありますか?
既に OHHTTPStubs ポッドをインストールしましたが、UITest ターゲットとアプリケーション ターゲットが異なるスレッドで実行されるため、そのメソッドを使用してネットワーク リクエストをスタブできませんでした。
お勧めをいただければ幸いです。
Swift で記述された UITests のネットワーク リクエストをスタブする方法はありますか?
既に OHHTTPStubs ポッドをインストールしましたが、UITest ターゲットとアプリケーション ターゲットが異なるスレッドで実行されるため、そのメソッドを使用してネットワーク リクエストをスタブできませんでした。
お勧めをいただければ幸いです。
ここには 2 つの異なるオプションがあります。
Oletha のアプローチを採用して、アプリのコードでネットワークに触れることができます。NSURLSession をスタブして必要な応答を挿入し、いくつかの起動引数を使用して、通常のセッションの代わりにスタブ化されたセッションをいつ使用するかを特定する必要があります。その方法の詳細については、この記事を参照してください: http://masilotti.com/ui-testing-stub-network-data/
ローカル サーバーを実行して、テスト コードから直接データを挿入できます。大きな利点は、アプリ コードにまったく手を加える必要がないことです。テスト中に応答を簡単に変更することもできますが、これは最初のソリューションでは不可能です。
ローカル サーバーを実行するには、いくつかのオプションがあります。私はSwifterを使用していますが、他のオプションもあります: AmbassadorとSBUITestTunnelです。
どのソリューションを選択しても、一般的なプロセスは次のとおりです。
application:didFinishLaunchingWithOptions:
、API ベース URL をローカル サーバーのいずれかに切り替えます: http://localhostSwifter のこの記事には、より詳細なアプローチがあります。