2017-03-17 2 views
2

私のMockWebServerでは、私は2つの異なるディスパッチャーを使用しています。 1つのLocalResponseDispatcherは応答をローカルに追加し、通常のQueueDispatcherはいくつかのスタブ応答をエンキューします。私は2つの間で切り替えるのに問題があった。実際には、私は.setDispatcher()を使用しようとしているときに、Webサーバーの応答は、常に前の1つの応答。同じ問題がありますか?Android MockWebServerディスパッチャーの問題

答えて

0

私は同様の問題がありました。すべてのテストは別々に働いていましたが、複数のテストでは最初は自分の仕事をしました。私の問題は別の場所で嘘をついたことが分かった。あなたが@Beforeメソッド mockWebServer.url()で実行する場合、MockWebServerを使用するとき、あなたのAPIのためのポートはほとんどすべてのテストで異なることを覚えておいてください。 URLのポート番号が変更されます。 http://localhost:58919/ からhttp://localhost:52915/

私の問題は、私のAPIをURLで一度だけインスタンス化したことでした。アプリの作業中にAPIのURLが変更されないため、通常は良いアイデアです。解決策は、TestApplication extends ApplicationTestApplication extends Application(適切なカスタムjUnitランナーを使用)を指定してAPIを最後に作成することです。私の例では、Retrofitを再インスタンス化し、APIテストが魅力的な働きをし始めました。

+0

また、mockwebserverを使用するときにokhttpキャッシュやその他のキャッシュメカニズムを使用しないでください。私の場合はこれが問題でした。 – lupsyn

+0

@lupsynあなたの応答としてそれを公開してください:) – Przemo