簡體   English   中英

如何通過Spring Boot應用程序和Spock測試在運行時更改服務器端口

[英]How to change server port in runtime with a spring boot application and spock testing

我正在用Spock測試Spring Boot應用程序,但是在其中一個測試用例中,我需要模擬或存根對auth服務器的調用(使用oauth 2),所以我試圖將請求重定向到虛擬服務器以進行測試和使方法返回固定令牌。 但是,我在運行時覆蓋了端口,但是由於虛擬服務器位於固定端口(從application-test.yml )上,因此出現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 ,這不是Spring隨機選擇的端口

您可以將隨機端口注入測試中。

例如,使用@LocalManagementPort

    @LocalManagementPort
    int port;

或直接使用@Value:

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

但是,如果上述方法不起作用,那么我相信這是您的不得已的方法:

    int port = context.embeddedServletContainer.port

注入后,您可以在該端口上對服務器執行GET。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM