4

我正在运行模拟 Web 服务器来测试 REST API 调用,当活动启动并启动 mockWebserver 并执行 API 调用时,连接被拒绝,使用 OKHTTP v-3.10.0 和 Retrofit 2.3.0

活动测试代码:

 @Rule
    public ActivityTestRule<STBUpgradeActivity> mActivityRule = new ActivityTestRule<>(STBUpgradeActivity.class, false, false);

    private MockWebServer server;

    @Before
    public void setUp() throws Exception {

        super.setUp();
        server = new MockWebServer();
        server.start();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        String serverUrl = server.url("/").toString();
        EnvConfig.WEB_API_SIT = serverUrl;
    }

    @Test
    public void testPageContentIsShown() throws Exception {
        String fileName = "stb_upgrade_page_content_200.json";
        server.enqueue(new MockResponse()
                .setResponseCode(200)
                .setBody(RestServiceTestHelper.getStringFromFile(getInstrumentation().getContext(), fileName)));

        Intent intent = new Intent();
        mActivityRule.launchActivity(intent);

        onView(withId(R.id.button_upgrade)).check(matches(isDisplayed()));
        onView(withText("New residential subscribers and standard install only. If Sports is a part of your package")).check(matches(isDisplayed()));
    }

======= RestAPI 客户端

 private Retrofit getClient() { 
        retrofit = new Retrofit.Builder()
                .baseUrl(WEB_API_HOST)
                .addConverterFactory(GsonConverterFactory.create())
                .client(getHttpClient())
                .build();

        return retrofit;
    }

调试模式下的失败回调

模拟服务器启动

4

1 回答 1

2

将设置代码更改为

 @Before
    public void setUp() throws Exception {

        super.setUp();
        server = new MockWebServer();
        server.start(8080);
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
    }

将改造基础 URL 设置为

private Retrofit getClient() {
        retrofit = new Retrofit.Builder()
                .baseUrl("http://localhost:8080/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(getHttpClient())
                .build();

        return retrofit;
    }
于 2018-08-22T00:25:14.480 回答