如何获取运行Grails 3.1.9集成测试的Url?

时间:2016-07-07 17:47:43

标签: grails grails-3.1

来自Grails 3.1.9重新注释:

  

集成测试端口   集成和功能测试现在在随机端口上运行   而不是默认情况下与应用程序相同的端口。   这是为了避免应用程序时出现端口冲突问题   已经运行。集成测试硬编码端口   将需要改变使用   使用@Integration

标记的测试的serverPort属性

我通常会使用

获取集成测试网址

import grails.util.Holders ... .. . def urlWhereIntegrationAppIsRunning = Holders.grailsApplication.config.grails.serverURL

然后在我的 application.yml 我有类似的东西:

test: server: port: 8090 grails: serverURL: http://localhost:8090

如何在集成测试中使用Grails 3.19获取运行集成测试的Url(服务器URL和随机端口)?

解决方案

根据Marco的回答,我做了一个Trait来封装运行集成测试的url。我在Spock的规范中实现了这个特性,我测试了我的API。

import org.springframework.beans.factory.annotation.Value

trait TIntegrationServerUrl {

    @Value('${local.server.port}')
    Integer serverPort

    String integrationServerUrl() {
        "http://localhost:$serverPort"
    }
}

1 个答案:

答案 0 :(得分:4)

您可以在集成测试中使用以下内容。

@Value('${local.server.port}')
Integer port

这将为您提供测试中的端口