禁用Grails插件

Dón*_*nal 6 grails grails-plugin

在我的Grails应用程序中,我想在运行单元测试时阻止加载Searchable插件.我尝试使用Bootstrap类中的以下代码执行此操作

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 
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,因为grailsApplication.getClassForName("SearchableGrailsPlugin")返回null,可能是因为此代码运行时此类不在类路径上.有没有其他方法可以禁用此插件?

Dón*_*nal 8

我找到了解决方案.将以下内容添加到Config.groovy:

environments {
    test {
        plugin {
            excludes = "searchable"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Sea*_*ney 4

我不知道如何禁用该插件,可能有一种使用本机指南针 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"
    }
}
 }
Run Code Online (Sandbox Code Playgroud)