0

次のように定義されている非サービスクラスがあります。

class A{
   B b
   A( B b ){ this.b = b }
}

ここで、Bはgrailsサービスです。私のユニットテストでは、これを試しました:

A a = new A( new B() );

ただし、何らかの理由でb設定されることはなく、テストの実行時に変数b [local, the argument to the mehod]がIntelli-Jのデバッガーに表示されることもありません。つまり、引数の名前をに変更できservice、デバッガーはそれを未定義として表示します。

サーバーを起動しようとするとInitialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException、が表示されるので、これは関連していると思います。

何が起きてる?

4

1 に答える 1

2

それは奇妙なシナリオのようです。Aは何をしていますか?Aが本当にサービスである可能性はありますか?

Aをサービスにすることをお勧めします。その場合、通常の使用法に従ってBサービスを注入できます。

Bが何にも依存していない(自動配線フィールド)場合を除いて、「new B()」を実行することは実際には有効ではないと思います。おそらく、Bをテストに注入する方が良いでしょうか?

于 2011-01-31T04:18:54.587 に答える