1

Grails 統合テストでアプリケーション URL を取得する方法はありますか?

URL には次を含める必要があります。

  • サーバー名
  • ポート
  • contextPath

例: 「localhost:8080/アプリ名」

プロトコルが含まれているかどうかは気にしません。

実行時にこれを行う方法を探しています-URLをたとえばハードコーディングするのConfig.groovyは役に立ちません。

4

4 に答える 4

2

これは醜い方法です。

まず、grailsLinkGenerator統合テストに Bean を挿入します。

def grailsLinkGenerator

次に、サーバー URL を自分で作成します。

grailsLinkGenerator.serverBaseURL + ':' + 
        (System.properties['server.port']?:'8080') +
        grailsLinkGenerator.contextPath
于 2013-10-09T13:34:18.120 に答える
1

テスト環境は構成ファイルに追加されません。テスト環境を追加して、そこにサーバーの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

これを試して..、。

于 2013-10-09T10:07:57.783 に答える
0

上記と同じですが、ポートを明示的に指定します

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

于 2013-10-09T11:29:12.930 に答える