我想在 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>>