2009-07-24 8 views
6

내 Grails 앱에서 단위 테스트를 실행할 때 Searchable 플러그인이로드되지 않도록하고 싶습니다. 나는 grailsApplication.getClassForName("SearchableGrailsPlugin") 반환 널 (null) 때문에이 코드가 실행될 때이 클래스가 클래스 경로에없는 아마도 때문에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 
    } 
} 

그러나이 작동하지 않는 부트 스트랩 클래스에 다음 코드를 사용하여이 일을 시도했다. 이 플러그인을 사용 중지 할 수있는 다른 방법이 있습니까?

답변

4

난 당신이 이 추가 플러그인을 설치 ... 다음에 단위 테스트가 더 견딜 수 있도록 할 수있을 Grails는 native compass XML

있는 방법이있을 수도 플러그인을 사용하지 않도록 설정하는 방법 확실하지 않다 : grails install-searchable-config

이것은 grails-app/conf/Searchable.groovy 파일을 제공합니다. environments.test.searchable closure를 편집하여 적어도 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 릴리스 구축이 환경을 사용하는 경우 그러나, 이것은 또한 테스트 버전에 영향을 것입니다, 테스트 할 때 플러그인을 포함에서 빌드 환경을 중지합니다.