2009-07-24 101 views
6

在我的Grails应用程序中,我想在运行单元测试时阻止加载Searchable插件。我试着用在引导类下面的代码禁用Grails插件

def grailsApplication 

def init = {servletContext -> 
    def currentEnv = grails.util.Environment.current.name 

    if (currentEnv == 'test') { 

     def doNothing = {println "Searchable is disabled"} 

     // This returns null! 
     def searchablePluginClass = grailsApplication.getClassForName("SearchableGrailsPlugin") 

     searchablePluginClass.metaClass.doWithDynamicMethods = doNothing 
     searchablePluginClass.metaClass.doWithSpring = doNothing 
     searchablePluginClass.metaClass.doWithApplicationContext = doNothing 
    } 
} 

然而,这并不工作,因为grailsApplication.getClassForName("SearchableGrailsPlugin")返回NULL,大概是因为这个类是不是在classpath此代码运行时这样做。有没有其他方法可以禁用此插件?

回答

4

我不知道如何禁用插件,则可能是native compass XML

使用Grails的方式,你也许可以使单元测试更惬意与以下... 安装此插件附加: grails install-searchable-config

这会给你一个grails-app/conf/Searchable.groovy文件。您可以编辑 environments.test.searchable闭包,以至少禁用bulkIndexOnStartup和mirrorChanges。

environments { 
test { 
    searchable { 
     // disable bulk index on startup 
     bulkIndexOnStartup = false 
     mirrorChanges = false 

     // use faster in-memory index 
     compassConnection = "ram://test-index" 
    } 
} 
} 
8

我找到了一个解决方案。以下内容添加到Config.groovy中:

environments { 
    test { 
     plugin { 
      excludes = "searchable" 
     } 
    } 
} 
0

要禁用测试版本,它运行测试使用插件 - 以下是有可能在BuildConfig.groovy如果包括你的插件那里。

environments { 
      development { 
       compile ":searchable:0.6.6" 
      } 
      test { 
      } 
      production { 
       compile ":searchable:0.6.6" 
      } 
     } 
} 

这从包括插件进行测试时,然而,这也将如果你使用这个环境来构建UAT释放效果的测试版本将停止构建环境。