1. ホーム
  2. android

[解決済み] スクエア後付サーバーのテスト用モック

2022-12-08 15:41:15

質問

を使用する際に、テスト用のサーバをモック化する最も良い方法は何でしょうか? square retrofit フレームワーク .

可能性のある方法

  1. 新しいレトロフィットを作成する クライアント を作成し、 RestAdapter.Builder().setClient() で設定します。これは、Requestオブジェクトをパースして、Responseオブジェクトとしてjsonを返すというものです。

  2. このアノテーションされたインターフェースをモッククラスとして実装し、 RestAdapter.create() で提供されるバージョンの代わりにそれを使用します (wont test gson serialisation)。

  3. ?

理想的には、モックされたサーバーがjsonレスポンスを提供し、同時にgsonシリアライズをテストできるようにしたいです。

どんな例でも大いに感謝されます。

どのように解決するのですか?

次のように方法1を試すことにしました。

public class MockClient implements Client {

    @Override
    public Response execute(Request request) throws IOException {
        Uri uri = Uri.parse(request.getUrl());

        Log.d("MOCK SERVER", "fetching uri: " + uri.toString());

        String responseString = "";

        if(uri.getPath().equals("/path/of/interest")) {
            responseString = "JSON STRING HERE";
        } else {
            responseString = "OTHER JSON RESPONSE STRING";
        }

        return new Response(request.getUrl(), 200, "nothing", Collections.EMPTY_LIST, new TypedByteArray("application/json", responseString.getBytes()));
    }
}

で使っていること。

RestAdapter.Builder builder = new RestAdapter.Builder();
builder.setClient(new MockClient());

これはうまく動作し、実際のサーバーに問い合わせることなくjson文字列をテストすることができます!