3

Retrofit2 で作成した Rest サービスをテストしたいと思います。すべての応答を個別にモックしたくはありませんが、Web サーバー全体をモックしたいと考えています。MockServer で可能であることがわかりました。しかし、私はそれを扱うことができません。

Retrofit2 のベース URL は、ビルド タイプによって指定されます。たとえば、次のように「ステージング」などの新しいビルドタイプを作成しようとしました。

    staging {
        buildConfigField "String", "APP_BASE_URL", "\"http://test.com\""
    }

gradle configにも追加されました

testBuildType "staging"

しかし、私のテストはもう機能しません。Intellij ではすべてが赤くなります。依存関係が見つかりません。

基本的に私がやりたいことは、テストごとに、特定の URL を持つモック Web サーバーが必要なことです。この URL は Retrofit2 インターフェイスのベース URL で使用され、mockwebserver が特定の JSON ファイル応答で応答するようにします。

例えば:

@Before
override public fun setUp() {
    super.setUp()
    server = MockWebServer()
    server.url("http://test.com")
}

@Test
fun forbiddenLogin() {
    server.enqueue(MockResponse()
            .setResponseCode(403)
            .setBody("{\"message\": \"Forbidden access!\"}")
    )
    server.start()

   //HOW TO CALL AND TESTS MY SERVICES HERE?
}

詳細については、私の Retrofit2 サービスは RxJava Observable を使用しています

@POST("/rest/login")
@FormUrlEncoded
fun login(
        @Field("login") login: String,
        @Field("password") password: String
): Observable<ApiWrapper<UserDTO>>
4

0 に答える 0