如何在启动 UI 测试之前模拟 API?



我想在活动启动之前模拟API响应,以测试实时场景。我使用带有视图模型的rxjava在实际活动类中进行API调用。我创建了一个自定义调度程序来模拟API调用,并在BaseUItest类中调用它。但是当我启动测试时,这个过程不起作用,因为我看到没有数据正在加载,也没有模拟API调用正在进行。下面是BaseUItest:

open class BaseUITest {
protected var mockWebServer = MockWebServer()
@Before
open fun setup() {
mockWebServer.start(5000)
mockWebServer.dispatcher = ApiDispatcher()
}
@After
open fun teardown() {
mockWebServer.shutdown()
}
}

在模拟API之前,我需要模拟视图模型吗?我在这里做什么?请帮助。

在调度程序中,您需要检查端点,并为这个模拟服务器生成您自己的模拟响应。例如,

val server = MockWebServer()
val dispatcher: Dispatcher = object : Dispatcher() {
@Throws(InterruptedException::class)
override fun dispatch(request: RecordedRequest): MockResponse? {
when (request.path) {
"/v1/login/auth/" -> return MockResponse().setResponseCode(200)
"/v1/profile/info" -> return MockResponse().setResponseCode(200)
.setBody("{"info":{"name":"Lucas Albuquerque","age":"21","gender":"male"}}")
}
return MockResponse().setResponseCode(404)
}
}
server.setDispatcher(dispatcher)

在调用部分中,您可以通过

获取端点url
fun getUrl(): HttpUrl {
return server.url("/v1/profile/info")
}

它将返回dispatcher中提到的带有json主体的服务器响应。

最新更新