2009-07-24 81 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釋放效果的測試版本將停止構建環境。