3

我想在 Retrofit2 下测试我的 Rest 服务构建。我不想单独模拟所有响应,但我想模拟整个 Web 服务器。我发现使用 MockServer 是可能的。但我无法使用它。

我的 Retrofit2 基本 URL 由我的构建类型给出。例如,我尝试创建一个新的构建类型,例如“staging”,如下所示:

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

并添加到 gradle 配置中

testBuildType "staging"

但是我的测试不再起作用了,Intellij 中的一切都变红了。未找到依赖项。

基本上我想要做的是,对于每个测试,我想要一个具有特定 URL 的模拟 Web 服务器。我的 Retrofit2 接口基本 URL 将使用这个 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