如何在存储库中初始化 okHttp 的 MockServer()?

Posted

技术标签:

【中文标题】如何在存储库中初始化 okHttp 的 MockServer()?【英文标题】:How to initialize okHttp's MockServer() in a repository? 【发布时间】:2019-03-22 06:56:15 【问题描述】:

Server.kt(是一个将返回用户列表的模拟服务器) https://github.com/shalbert94/androidinterview/blob/master/server/src/main/java/com/jobrapp/server/Server.kt

由于某种原因,在我的存储库 (https://github.com/shalbert94/androidinterview/blob/master/app/src/main/java/com/jobrapp/androidinterview/MockServerRepository.kt) 中调用的 val server = Server() 抛出: Unable to start activity ComponentInfocom.jobrapp.androidinterview/com.jobrapp.androidinterview.MainActivity: android.os.NetworkOnMainThreadException

问题似乎源于调用MockWebServer()start() 方法,该方法在Serverinit 块中调用。如何在我的存储库中初始化 Server 而不会触发 NetworkOnMainThreadException?

【问题讨论】:

【参考方案1】:

感谢 Kotlin 协程!

fun getUsers(liveData: MutableLiveData<List<User>>) = launch 
        val server = async Server() 

        server.await().getUsers().enqueue(object: Callback<List<User>> ...)
    

【讨论】:

以上是关于如何在存储库中初始化 okHttp 的 MockServer()?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rhino Mocks 保存到存储库

如何使用 Rhino Mocks 模拟任意行为?

如何撤消新初始化存储库中的提交(未推送)[重复]

如何使用 OkHttp 在 Android 上实现 cookie 处理?

如何在 Rhino Mocks 3.6 中将 Expect 设置为扩展方法

如何避免 Typescript 转译 Jest __mocks__