2009-07-24 47 views
6

Trong ứng dụng Grails của tôi, tôi muốn ngăn plugin Tìm kiếm tải khi chạy thử nghiệm đơn vị của tôi. Tôi cố gắng làm điều này bằng cách sử dụng đoạn mã sau trong lớp BootstrapVô hiệu hóa plugin 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 
    } 
} 

Tuy nhiên điều này không làm việc vì grailsApplication.getClassForName("SearchableGrailsPlugin") trả về null, có lẽ vì lớp này không phải là trên classpath khi mã này chạy. Có cách nào khác để tôi có thể tắt plugin này không?

Trả lời

4

Tôi không chắc chắn làm thế nào để vô hiệu hóa các plugin, có thể có một cách với native compass XML

Với grails bạn có thể có thể làm kiểm tra đơn vị chịu đựng nhiều hơn với những điều sau đây ... Cài đặt plugin bổ sung này: grails install-searchable-config

Điều này sẽ cung cấp cho bạn tệp grails-app/conf/Searchable.groovy. Bạn có thể chỉnh sửa environment.test.searchable closure để ít nhất vô hiệu hóa bulkIndexOnStartup và mirrorChanges.

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

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

Tôi đã tìm được giải pháp. Thêm dòng sau vào Config.groovy:

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

Để vô hiệu hóa một plugin cho việc xây dựng kiểm tra, mà chạy thử nghiệm sử dụng - sau đây là nơi cư trú của BuildConfig.groovy nếu bạn bao gồm plugin của bạn có;

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

Điều này sẽ làm mất môi trường xây dựng nếu bạn sử dụng môi trường này để tạo bản phát hành UAT.

Các vấn đề liên quan