Номер порта жесткого кодирования для фиктивного сервера с использованием тестовых контейнеровJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Номер порта жесткого кодирования для фиктивного сервера с использованием тестовых контейнеров

Сообщение Anonymous »

Я использую тест-контейнеры для создания макетного сервера в JUnit5.
Кажется, номер порта меняется при каждом запуске случайным образом, я хочу, чтобы у него был фиксированный номер порта, который я решу.
как это сделать можно сделать?

Код: Выделить всё

import kong.unirest.ContentType;
import kong.unirest.HttpStatus;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.mockserver.client.MockServerClient;
import org.mockserver.model.HttpResponse;
import org.mockserver.model.HttpStatusCode;
import org.testcontainers.containers.MockServerContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.com.google.common.net.HttpHeaders;
import org.testcontainers.utility.DockerImageName;

import java.nio.file.Path;
import java.util.Map;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockserver.model.HttpRequest.request;

@Testcontainers
class Mocking {

@Container
private static final MockServerContainer mockServerContainer = new MockServerContainer(
DockerImageName.parse("mockserver/mockserver"));
private static MockServerClient mockServerClient;
private static String BASE_URL;

@BeforeAll
public static void initialize() {
mockServerClient = new MockServerClient(mockServerContainer.getHost(), mockServerContainer.getServerPort());
BASE_URL = mockServerContainer.getEndpoint();
System.out.println(BASE_URL);// its printing localhost:portnumber
//the portnumber is random for each run, I want it to be consistent
}

@BeforeEach
public void setup() {
mockServerClient.reset();
}

@Test
void helloWorldTest() {
Map headers = Map.of(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType());

String expectedResponse = JsonHelper.toJsonString("Hello World!");

mockServerClient
.when(request().withMethod("GET")
.withHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType())
)
.respond(HttpResponse.response()
.withHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.getMimeType())
.withStatusCode(HttpStatusCode.OK_200.code())
.withBody(expectedResponse)
);

Response response = HttpUtil.builder().baseUrl(BASE_URL).headers(headers).build().get(null).call();
assertThat(response.getStatus()).isEqualTo(HttpStatus.OK);
assertThat(response.asString()).isEqualTo(expectedResponse);
}

}
В официальной документации Java по этому поводу практически нет информации, я попробовал найти методы, которые могут это сделать.

Подробнее здесь: https://stackoverflow.com/questions/787 ... containers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»