我的开发环境如下:
Grails版本:1.3.7.RELEASE
请按照以下步骤操作:
mkdir GrailsProjects
cd GrailsProjects
grails create-plugin grails-domain
cd grails-domain
grails create-domain-class Book
cd ..
grails create-plugin grails-service
cd grails-service
grails create-service BookService
添加
grails.plugin.location."grails-domain" = "../grails-domain"
位于BuildConfig.groovy
项目
grails-service
的顶部
使用文本编辑器,将文件Book.groovy
的内容更改为:
package grails.domain class Book { String name static constraints = { } }
将文件BookService.groovy
的内容更改为:
package grails.service import grails.domain.Book class BookService { static transactional = true def someMethod() { def book = Book.findByName("Fooled by randomness") } }
在尝试调用方法BookService.someMethod
时,Grails无法在findByName
上找到Book
方法。 Book.name
内可以看到BookService.someMethod
,表示grails-service
插件项目能够解析grails-domain
插件项目中的代码。
步骤完全如上所列;没有执行其他步骤。
这是Grails插件项目的预期行为吗?是否有不同的方法将域和服务类与Grails分开?
答案 0 :(得分:1)
谢谢@david。我还没有达到插件与Web应用程序集成的程度,所以我没有使用控制器进行测试。我只是试图使用单元测试来测试插件的概念。我从BookService.someMethod
调用了BookServiceTests
,这是我在创建服务时自动创建的。
我发现在单元测试期间必须模拟域类,以获得所有GORM功能,包括动态查找器。我将mockDomain(Book, [])
添加到BookServiceTests.setUp
以使单元测试正常运行。
现在一切正常。