[英]Importing an externalised Groovy DSL Spring bean configuration into Grails resources.groovy
[英]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
}
// 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.