MockwebServer не высмеивает вызов http

Недавно я обнаружил библиотеку MockWebServer, и я пытаюсь использовать ее в своем проекте с Junit и mockito.

У меня есть этот метод испытаний:

       @Test
       public void testGetUsers() throws Exception {
            MockWebServer server = new MockWebServer();
            server.start();
            MockResponse mockedResponse = new MockResponse();
            mockedResponse.setResponseCode(200);
            mockedResponse.setBody("{}");
            server.enqueue(mockedResponse);
            server.url("https://my-domain/user/api/users");
            JSONObject result = UserService.getUsers();
            assertNotNull(result);
            server.shutdown();
       }

Мой метод getUsers() делает вызов Http:

public JSONObject getUsers() {
     String urlUser = "https://my-domain/user/api/users";
     Request request = new Request.Builder()
                .url(urlUser)
                .build();

     Response response = 
     MyConf.getOkHttpClient().newCall(request).execute();
     .... //process users and return a json Object
}

И вот моя конфигурация gradle:

compile('com.squareup.okhttp3:okhttp:3.4.2')
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.0'
testImplementation 'com.squareup.okhttp3:mockwebserver:3.12.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.0'
testCompile 'org.junit.jupiter:junit-jupiter-params:5.1.0'
testCompile group: 'org.mockito', name: 'mockito-all', version: '1.8.4'
testCompile group: 'com.squareup.okhttp3', name: 'mockwebserver', version: '3.12.0'

Когда я запускаю модульное тестирование, Mockwebserver не вызывает вызов http. Я получаю ответ от своего реального сервера, а не поддельный ответ ("{}").

Вы можете помочь мне с этим? заранее спасибо

1 ответ

Я думаю, что это не работает так, как вы ожидаете. В git readme они дают следующий пример кода:

  // Ask the server for its URL. You'll need this to make HTTP requests.
  HttpUrl baseUrl = server.url("/v1/chat/");

Таким образом, вы получаете URL через фиктивный сервер, который вам нужно будет вызвать, а не перезаписываете какой-либо существующий URL.

Я просто дважды проверил это с помощью следующего исходного кода:

MockWebServer server = new MockWebServer();
server.start();
HttpUrl baseUrl = server.url("/v1/chat/");

Это дает для baseUrl новый адрес: http://127.0.0.1:8125/v1/chat/

Другие вопросы по тегам