3

私は Grails REST アプリケーションを構築しており、Spock を使用して機能テストを作成しました。これらの機能テストは REST サービス専用であることに注意してください。

class LoginFunctionalSpec extends Specification {
  def setUp() {
    // here I want to access grailsApplication.config
  }
}

私はすでに次のアプローチを試しました:

  1. grailsApplication を (クラス レベル変数として定義して) 注入しますが、何も注入されません。
  2. ApplicationHolder.application.config を使用しますが、廃止されており、提案されたアプローチは前のポイントでした。
  3. プラグイン remote-control:1.4 を使用しようとしましたが、grails コンソールにはプラグインがインストール済みとして表示されましたが、クラス RemoteControl が見つかりませんでした。また、私はこのアプローチについて確信が持てませんでした
  4. grails-app/conf/Config.groovy をファイルとして読み込もうとしましたが (こちらで説明されています)、FileNotFoundException が発生しました。

しかし、機能テスト内で grailsApplication.config を提供してくれるものはありません。

これを達成する方法はありますか?

アップデート

@dmahapatro

私は REST サービスをテストしており、ブラウザの自動化は必要ないため、Geb は使用していません。

ポイント#1で述べたように、grailsアプリケーションは自動注入されていません。

class LoginFunctionalSpec extends Specification {
  def grailsApplication

  def setUp() {
     def port = grailsApplication.config.mongo.port //throws NPE
  }
}

構成プロパティがnullオブジェクトで呼び出されていることを示すNPEをスローします。

4

2 に答える 2

3

明示的に何かを注入する必要はないと思います。grailsApplicationテストではデフォルトで使用できます。

class LoginFunctionalSpec extends Specification {
  def setUp() {
     grailsApplication.config.blah //should work
  }
}

注 -
Spock は、機能テストを直接サポートしていません。適切な機能テストにはGebを使用する必要があります。

于 2013-09-04T14:04:36.960 に答える