Spring DSL в Grails - resources.groovy - конфигурация компонента в другом файле?

Этот вопрос уже существует в некотором роде, но существующий вопрос отсутствуют некоторые важные ссылки.

Я пытаюсь переместить конфигурацию bean-компонентов для своих тестов в отдельные файлы, которые заканчиваются на *TestsSpringBeans.groovy

Я попытался сделать это после прочтения "Загрузка Bean Definitions from the File System" (найдите его) в документации Groovy.

Вот соответствующие сегменты кода:

import grails.util.*

beans = {
...
  switch(Environment.current) {
    case Environment.TEST:
      loadBeans("classpath:*TestsSpringBeans.groovy")
      break
    }
}

resources.groovy — загрузка файлов *TestSpringBeans из файловой системы.


somePlace(jobdb.Company) {
    name = "SomeCompany"
    addr1 = "addr1"
    addr2 = "addr2"
    city = "city"
    email = "[email protected]"
    fax = "555-555-5555"
    phone = "444-444-4444"
    state = "PA"
    zip = "19608"
    version: 0
    created = new Date()
    updated = new Date()
    website = "http://www.yahoo.com"
    deleted = false
  }

CompanyServiceTestsSpringBeans.groovy — определение компонента для интеграционного теста

// Retrieve configured bean from 
Company someplace = ApplicationHolder.getApplication().getMainContext().getBean('somePlace')

CompanyServiceTests.groovy — получить bean-компонент somePlace в рамках интеграционного теста...

При вызове getBean('somePlace') в рамках теста отображается ошибка, в которой говорится, что No bean named 'somePlace' is defined

Файл CompanyServiceTests.groovy хранится вместе с моими интеграционными тестами. Должен ли я хранить этот файл где-то еще в структуре каталогов проекта?


person leeand00    schedule 04.10.2011    source источник


Ответы (1)


Поскольку ваши тесты выполняются таким образом, что использование пути к классам в качестве контрольной точки менее важно, вы можете попытаться загрузить файл bean-компонентов { ... }, ссылаясь на определенный путь к каталогу проекта. (например, $baseDir/test/resources/MyCustomBeans.groovy) или явно загрузите bean-компоненты в свои тесты через @BeforeClass, если вы используете аннотации JUnit4:

def bb = new BeanBuilder()
def resource = new FileSystemResource('src/test/resources/testContext.groovy')
bb.loadBeans(resource)
appCtx = bb.createApplicationContext()
...
person Todd W Crone    schedule 10.11.2011