首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MockWebServer - ConnectException:连接失败

MockWebServer - ConnectException:连接失败
EN

Stack Overflow用户
提问于 2019-06-04 12:25:29
回答 1查看 3K关注 0票数 2

当我开始我的测试,我得到连接异常,我不知道为什么。

我找到了一些代码,其他的作者和比较代码,我没有发现任何错误。我试图改变端口或移除它,但这对我没有帮助。

代码语言:javascript
复制
@RunWith(AndroidJUnit4::class)
class RideFragmentTest {

@get:Rule
    val activityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)
    private val mockWebServer = MockWebServer()
    private val PORT = 8607

@Before
    fun init() {
        mockWebServer.start(PORT)
        routeToFragment()
    }

@After
    fun finish() {
        mockWebServer.shutdown()
    }

@Test
    fun someTest() {
        val dispatcher = object : Dispatcher() {
            @Throws(InterruptedException::class)
            override fun dispatch(request: RecordedRequest): MockResponse {
                when (request.path) {
                    "/something/current" -> {
                        val jsonBody = asset(activityRule.activity, "something.json")
                        return MockResponse().setResponseCode(200).setBody(jsonBody)
                    }
                    "/something/save" -> {
                        return MockResponse().setResponseCode(200)
                    }
                }
                return MockResponse().setResponseCode(404)
            }
        }
        mockWebServer.dispatcher = dispatcher

        assertDisplayed(..., ...)
    }
}
代码语言:javascript
复制
D/OkHttp: --> GET http://127.0.0.1:8607/something/current
D/OkHttp: --> END GET
HTTP FAILED: java.net.ConnectException: Failed to connect to /127.0.0.1:8607

我没发现任何奇怪的原木。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 13:15:46

我解决了我的问题。

我的代码应该是这样:

代码语言:javascript
复制
@RunWith(AndroidJUnit4::class)
class RideFragmentTest {

private val fragment = RideFragment.newInstance()

@get:Rule
    val activityRule: ActivityTestRule<MainActivity> = ActivityTestRule(MainActivity::class.java)
    private val mockWebServer = MockWebServer()
    private val PORT = 8607

@Before
    fun init() {
        mockWebServer.start(PORT)
    }

@After
    fun finish() {
        mockWebServer.shutdown()
    }

@Test
    fun someTest() {
        val dispatcher = code above..
        mockWebServer.dispatcher = dispatcher
        routeToFragment()

        assertDisplayed(..., ...)
    }

    private fun routeToFragment() = activityRule
       .activity
       .supportFragmentManager
       .beginTransaction()
       .replace(R.id.container, fragment)
       .commit()
}

也就是说,我必须在设置dispatcher之后路由我的片段,因为mockwebserver没有时间进行初始化,否则(我理解)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56443862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档