繁体   English   中英

Grails中的Spring DSL-resources.groovy-Bean配置在其他文件中吗?

[英]Spring DSL in Grails - resources.groovy - bean configuration in a different file?

这个问题已经以某种方式存在 ,但是现有的问题缺少一些重要的链接。

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

阅读Groovy文档中的“从文件系统加载Bean定义” (搜索)之后,我尝试执行此操作。

以下是相关的代码段:

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

由于测试以使用类路径作为参考点不太重要的方式运行,因此您可以尝试通过项目目录特定路径进行参考来加载bean {...}文件。 (例如$ 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()
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM