![](/img/trans.png)
[英]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.