Spring DSL в Grails - resources.groovy - конфигурация бина в другом файле? - PullRequest
2 голосов
/ 05 октября 2011

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

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

Я попытался сделать это после прочтения «Загрузка определений бина из файловой системы» (поиск по нему) в документации 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 = "somedude@h0tmail.com"
    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 - Получение компонента somePlace в рамках теста интеграции...

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

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

1 Ответ

1 голос
/ 10 ноября 2011

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

def bb = new BeanBuilder()
def resource = new FileSystemResource('src/test/resources/testContext.groovy')
bb.loadBeans(resource)
appCtx = bb.createApplicationContext()
...
...