grailsApplicationオブジェクトを介してサービス層 Bean にアクセスする (非 Grails アーティファクト) クラスがいくつかあります。ただし、この方法で実装されたクラスの単体テストに問題があります。Bean がメイン コンテキストに登録されないのはなぜですか?
@TestMixin(GrailsUnitTestMixin)
class ExampleTests {
void setUp() {}
void tearDown() {}
void testSomething() {
defineBeans {
myService(MyService)
}
assert grailsApplication.mainContext.getBean("myService") != null
}
}
上記のコードは次のエラーで失敗します。
org.springframework.beans.factory.NoSuchBeanDefinitionException: 「myService」という名前の Bean が定義されていません
私がやろうとしているのは、grailsApplication を介してプレーンな古い Java クラスからサービスにアクセスすることです。これは機能しますが、単体テスト環境では機能しません。別の方法で行う必要がありますか?
class POJO {
MyService myService;
public POJO(GrailsApplication grailsApplication) {
myService = (MyService) grailsApplication.getMainContext().getBean("myService");
}
}