1

Swift で記述された UITests のネットワーク リクエストをスタブする方法はありますか?

既に OHHTTPStubs ポッドをインストールしましたが、UITest ターゲットとアプリケーション ターゲットが異なるスレッドで実行されるため、そのメソッドを使用してネットワーク リクエストをスタブできませんでした。

お勧めをいただければ幸いです。

4

2 に答える 2

6

ここには 2 つの異なるオプションがあります。

  1. Oletha のアプローチを採用して、アプリのコードでネットワークに触れることができます。NSURLSession をスタブして必要な応答を挿入し、いくつかの起動引数を使用して、通常のセッションの代わりにスタブ化されたセッションをいつ使用するかを特定する必要があります。その方法の詳細については、この記事を参照してください: http://masilotti.com/ui-testing-stub-network-data/

  2. ローカル サーバーを実行して、テスト コードから直接データを挿入できます。大きな利点は、アプリ コードにまったく手を加える必要がないことです。テスト中に応答を簡単に変更することもできますが、これは最初のソリューションでは不可能です。

ローカル サーバーを実行するには、いくつかのオプションがあります。私はSwifterを使用していますが、他のオプションもあります: AmbassadorSBUITestTunnelです。

どのソリューションを選択しても、一般的なプロセスは次のとおりです。

  • 起動引数を渡して、UITests を実行していることを識別します
  • でその起動引数をキャッチしapplication:didFinishLaunchingWithOptions:、API ベース URL をローカル サーバーのいずれかに切り替えます: http://localhost
  • サーバーを起動します
  • テストしている URL に応答を挿入する

Swifter のこの記事には、より詳細なアプローチがあります。

于 2018-01-24T13:07:37.123 に答える