Как изменить порт сервера во время выполнения с помощью приложения с весенней загрузкой и тестированием спока - PullRequest
0 голосов
/ 08 февраля 2019

Я тестирую приложение Spring Boot с помощью Spock, но в одном из тестовых случаев мне нужно смоделировать или заблокировать вызовы к серверу авторизации (используя oauth 2), поэтому я пытаюсь перенаправить запросы на фиктивный сервердля тестирования и заставить методы возвращать фиксированный токен.Тем не менее, я перезаписываю порт во время выполнения, но получаю ошибку, потому что фиктивный сервер находится на фиксированном порту (считывается с application-test.yml), есть ли способ изменить это во время выполнения, чтобы сервер совпадал со случайным портом, которыйтест запущен?это моя setup функция:

`def setup() {
        omcService.soapClient = Stub(SOAPClient)
        String url = "http://localhost:${port}"
        nonRetryableExceptionProcessor.omsUrl = url
        omsService.omsUrl = url
        omsService.authUrl = "$url/oauth/token?scope=all"
        omsService = Spy(OmsService)
        producerTemplate.start()
    }

Когда я отлаживаю этот тест, свойства меняются, но когда приложение выполняет операцию GET, оно всегда указывает на localhost:4321, что не является случайным портомподобрана к весне

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете ввести произвольный порт в свой тест.

Например, используя @ LocalManagementPort :

    @LocalManagementPort
    int port;

Или напрямую используя @Value:

    @Value("${local.server.port}")
    int port;

Но если вышеприведенное не сработает, то я считаю, что это ваше последнее средство:

    int port = context.embeddedServletContainer.port

После его внедрения вы можете выполнить GET для сервера на этом порту.

...