Grails 統合テストでアプリケーション URL を取得する方法はありますか?
URL には次を含める必要があります。
- サーバー名
- ポート
- contextPath
例: 「localhost:8080/アプリ名」
プロトコルが含まれているかどうかは気にしません。
実行時にこれを行う方法を探しています-URLをたとえばハードコーディングするのConfig.groovy
は役に立ちません。
Grails 統合テストでアプリケーション URL を取得する方法はありますか?
URL には次を含める必要があります。
例: 「localhost:8080/アプリ名」
プロトコルが含まれているかどうかは気にしません。
実行時にこれを行う方法を探しています-URLをたとえばハードコーディングするのConfig.groovy
は役に立ちません。
これは醜い方法です。
まず、grailsLinkGenerator
統合テストに Bean を挿入します。
def grailsLinkGenerator
次に、サーバー URL を自分で作成します。
grailsLinkGenerator.serverBaseURL + ':' +
(System.properties['server.port']?:'8080') +
grailsLinkGenerator.contextPath
テスト環境は構成ファイルに追加されません。テスト環境を追加して、そこにサーバーのURLを配置するだけです
environments {
development {
grails.logging.jul.usebridge = true
grails.serverURL = "http://test2mkb.co.in"
}
production {
grails.logging.jul.usebridge = false
grails.serverURL = "http://test2mkb.co.in"
}
test {
grails.serverURL = "http://test2mkb.co.in"
}
}
そしてテスト中
def grailsApplication
...
String serverURL = grailsApplication.config.grails.serverURL
編集................................................. ...................................
import org.codehaus.groovy.grails.web.mapping.LinkGenerator
...
LinkGenerator grailsLinkGenerator
...
String serverURL = grailsLinkGenerator.serverBaseURL
これを試して..、。
environments {
development {
grails.logging.jul.usebridge = true
grails.serverURL = "http://test2mkb.co.in:8080/"
}
production {
grails.logging.jul.usebridge = false
grails.serverURL = "http://test2mkb.co.in:8080/"
}
test {
grails.serverURL = "http://test2mkb.co.in:8080/"
}
}
buildconfig.groovy で
grails.server.port.http="8080"
grails -Dgrails.env=test
test-app
8188、8181 などの選択した任意のポートでサーバーを実行するには、アプリを
次のように実行します。
grails -Dgrails.port = 8181 test-app