Grails:需要处理grailsApplication.config的测试的实用程序类

Mor*_*ive 0 grails

我有一堆集成测试.我想要一个具有测试使用的实用方法的类.我开始将实用程序方法全部静态化,并且很容易从测试中获得它们的句柄.

但是,我需要实用程序类才能获得grailsApplication.confg的句柄,所以我可以引入一些配置.为此,由于实用程序类不是服务,我创建了类实现ApplicationContextAware.这意味着我必须基于静态方法实例.很公平.

为了使它成为ApplicationContextAware,我实现了接口,我这样做:

class TestUtils {
    def grailsApplication
    @Override
    public void setApplicationContext(ApplicationContext applicationContext)
        throws BeansException {
           // TODO Auto-generated method stub
          this.grailsApplication = grailsApplication
    }
    ...
Run Code Online (Sandbox Code Playgroud)

但这永远不会被称为意味着我的本地grailApplication ref永远不会被设置.

如果我只是将这个TestUtility字段作为服务或者我做错了什么,这样会更好吗?

Sér*_*els 5

您可以使用静态方法保留实用程序类,并grailsApplication通过Holders类访问:

def grailsApplication = Holders.grailsApplication
Run Code Online (Sandbox Code Playgroud)