私は自分のエスプレッソ テストで行われたネットワーク呼び出しをインターセプトしようとしています。これにより、応答をローカル コピーで上書きし、テストをより確定的にすることができます。直面している問題は、MockWebServer を正しくセットアップしても、エスプレッソ テスト内からネットワーク呼び出しを行うと、http 呼び出しが傍受されます。これについて読んでほぼ 2 日を費やしましたが、問題を理解できませんでした。
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
}
}