Espresso mockWebServer响应不拦截http调用

时间:2016-11-08 18:47:46

标签: android-espresso mockwebserver mockserver

我试图拦截在我的espresso测试中进行的网络调用,以便我可以使用本地副本覆盖响应并使测试更具确定性。我面临的问题是即使我正确设置了MockWebServer我也从未见过当我在我的espresso测试中进行网络调用时,任何一个http调用被拦截。我花了差不多两天的时间阅读这个,但无法弄清楚问题。

public class FragmenEspressoTest extends InstrumentationTest<SomeActivity> {
    private MockWebServer mockWebServer;

    @Override
    public Class<HomeDrawerActivity> getActivityClass() {
        return HomeDrawerActivity.class;
    }

    @Before
    public void setUp() {
        super.setUp();
        mockWebServer = new MockWebServer();
        mockWebServer.setDispatcher(dispatcher);
        try {
            mockWebServer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    final Dispatcher dispatcher = new Dispatcher() {

        @Override
        public MockResponse dispatch(RecordedRequest request) throws InterruptedException {

            if (request.getPath().equals("/v1/login/auth/")){
                return new MockResponse().setResponseCode(200);
            } else if (request.getPath().equals("v1/check/version/")){
                return new MockResponse().setResponseCode(200).setBody("version=9");
            } else if (request.getPath().equals("/v1/profile/info")) {
                return new MockResponse().setResponseCode(200).setBody("{\\\"info\\\":{\\\"name\":\"Lucas Albuquerque\",\"age\":\"21\",\"gender\":\"male\"}}");
            }
            return new MockResponse().setResponseCode(404);
        }
    };
    @After
    public void tearDown() {
        super.tearDown();
        try {
            mockWebServer.shutdown();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void verifyUITest() {
    //verify some UI do some network calls
   }
}

0 个答案:

没有答案
相关问题