2009-07-24 6 views
6

Nella mia app Grails, voglio impedire il caricamento del plug-in ricercabile durante l'esecuzione dei miei test unitari. Ho provato a fare questo utilizzando il seguente codice nella classe BootstrapDisabilita plug-in 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 
    } 
} 

Tuttavia, questo non funziona perché grailsApplication.getClassForName("SearchableGrailsPlugin") restituisce NULL, presumibilmente perché questa classe non è sul classpath quando questo codice viene eseguito. C'è un altro modo in cui posso disabilitare questo plugin?

risposta

4

Non sono sicuro di come disattivare il plugin, ci potrebbe essere un modo con native compass XML

Con graal si potrebbe essere in grado di fare test di unità più sopportabile con il seguente ... installare questo plug-in aggiuntivo: grails install-searchable-config

Questo ti darà un file grails-app/conf/Searchable.groovy. È possibile modificare closure.test.searchable per disabilitare almeno bulkIndexOnStartup e mirrorChanges.

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

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

Ho trovato una soluzione. Aggiungere quanto segue al Config.groovy:

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

Per disattivare un plugin per il test build, che l'esecuzione di test utilizza - la seguente è possibile nel BuildConfig.groovy se si include il plugin là;

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

Ciò arresta l'ambiente di generazione da incluso il plug-in durante il test, tuttavia, questo sarà anche effettuare un test release se si utilizza questo ambiente per costruire UAT rilascia.