如何更改服务器端口运行时与弹簧启动应用程序和斯波克测试

问题描述 投票:0回答:1

我测试与斯波克一个春天启动应用程序,但对测试情况下,我需要模拟或存根我想重定向请求到虚拟服务器进行测试呼叫到认证服务器(使用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,这是不是随机端口拾起春天

java spring-boot groovy spock
1个回答
1
投票

你可以注入随机端口到您的测试。

例如使用@LocalManagementPort

    @LocalManagementPort
    int port;

或者直接使用@Value:

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

但是,如果上述方法无效,那么我相信这是你的最后一招:

    int port = context.embeddedServletContainer.port

有它注入,就可以在该端口上的服务器进行GET。

© www.soinside.com 2019 - 2024. All rights reserved.