0

非常に単純な Grails サービスがあります。

class UserService {
    def returnHi() { return "Hi" }    
}

次のように、統合テストでサービスにアクセスしようとしています。

def testService() {
  UserService userService
  assertEquals( "Hi", userService.returnHi() )
}

エラーが発生するのはなぜですか: java.lang.NullPointerException: Cannot invoke method returnHi() on null object?

御時間ありがとうございます

4

2 に答える 2

5

メソッド内に配置する代わりに、クラス フィールドとして「def userService」を配置するだけで十分です。統合テストでは、Bean はコントローラー、サービス、およびその他の Bean と同じように注入されます。

次のようにします。

class MyTests {
    def userService

    void serviceTest(){
        assert userService.returnHi(), 'Hi'
    }        
}

PSサービスの名前が正しく、キャメルケースで書かれていることを確認してください。

于 2013-01-19T21:26:28.220 に答える
0

統合テスト ファイルに次の行を追加します。

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH
def userService = AH.application.mainContext.userService

ここで説明されているように:サービスは Grails ドメイン クラス、Grails 2.0.0 および 2.0.3 に注入されていません

于 2013-01-19T20:22:38.250 に答える