【问题标题】:Spring DSL in Grails - resources.groovy - bean configuration in a different file?Grails中的Spring DSL-resources.groovy-不同文件中的bean配置?
【发布时间】:2011-12-01 01:03:34
【问题描述】:

此问题already exists in a way,但现有问题缺少一些重要链接。

我正在尝试将用于测试的 bean 配置移动到以 *TestsSpringBeans.groovy 结尾的单独文件中

我在阅读 Groovy 文档中的 "Loading Bean Definitions from the File System"(搜索它)后尝试这样做。

以下是相关代码段:

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 - 为集成测试定义一个 bean

// 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 文件与我的集成测试一起存储,我应该将此文件存储在项目目录结构中的其他位置吗?

【问题讨论】:

    标签: spring grails dependency-injection spring-dsl


    【解决方案1】:

    由于您的测试以使用类路径作为参考点不太重要的方式运行,您可能会尝试通过通过项目目录特定路径引用来加载 beans { ... } 文件。 (例如 $baseDir/test/resources/MyCustomBeans.groovy)或者如果您使用 JUnit4 注释,则通过 @BeforeClass 在您的测试中显式加载 bean:

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

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 2013-03-27
      相关资源
      最近更新 更多