gpt4 book ai didi

java - 如何使用 Spring Boot 应用程序和 spock 测试在运行时更改服务器端口

转载 作者:行者123 更新时间:2023-12-02 10:17:13 25 4
gpt4 key购买 nike

我正在使用 Spock 测试 Spring Boot 应用程序,但在其中一个测试用例中,我需要模拟或 stub 对身份验证服务器的调用(使用 oauth 2),因此我尝试将请求重定向到虚拟服务器用于测试并使方法返回固定标记。但是,我在运行时覆盖端口,但收到错误,因为虚拟服务器位于固定端口(从 application-test.yml 读取),有没有办法在运行时将其更改为使服务器与运行测试的随机端口相匹配?这是我的设置功能:

`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,这不是 Spring 拾取的随机端口

最佳答案

您可以将随机端口注入(inject)到测试中。

例如使用 @LocalManagementPort :

    @LocalManagementPort
int port;

或者直接使用@Value:

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

但是如果上述方法不起作用,那么我相信这是您最后的手段:

    int port = context.embeddedServletContainer.port

注入(inject)后,您可以在该端口上对服务器执行 GET。

关于java - 如何使用 Spring Boot 应用程序和 spock 测试在运行时更改服务器端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54599162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com