【问题标题】:How to generate unit tests for controller using the scaffolding template Test.groovy?如何使用脚手架模板 Test.groovy 为控制器生成单元测试?
【发布时间】:2012-11-12 14:31:53
【问题描述】:
如果我使用命令“create-controller”生成控制器,Grails 会生成控制器和单元测试(使用模板 /src/templates/scaffolding/Test.groovy)。
在更改模板的某些部分后,我现在想重新生成单元测试,但 Grails 不会生成它们。我试过了:
-
"create-unit-test" 但这将使用模板 /src/templates/testing/UnitTest.groovy
和
"create-integration-test" 将使用模板 /src/templates/testing/Generic.groovy
那么如何使用 Test.groovy 模板为控制器生成单元测试?
【问题讨论】:
标签:
unit-testing
testing
grails
controller
scaffolding
【解决方案1】:
在创建工件或使用脚手架时,Grails 使用模板来创建域类、控制器、视图等。默认模板是 Grails 发行版的一部分,用于开箱即用的行为,但可以根据项目的特定需求进行定制。
将 Grails 在代码生成期间使用的模板复制到您的项目目录:
$ grails install-templates
src/templates/
├── artifacts
│ ├── Tests.groovy
│ ├── ...
├── scaffolding
│ ├── Test.groovy
│ ├── ...
└── war
└── web.xml
artifacts 目录包含 create-* 命令使用的模板。
脚手架目录包含 generate-* 命令使用的模板。
war 目录包含用于生成部署描述符的 web.xml 模板。
所以你需要编辑:
在您的情况下,重新生成您的控制器测试并仅覆盖您的测试文件:
$ grails generate-controller com.arturoherrero.Post
| Generating controller for domain class com.arturoherrero.Post
> File /grails-app/controllers/com/arturoherrero/PostController.groovy already exists. Overwrite?[y,n,a] n
> File /test/unit/com/arturoherrero/PostControllerTests.groovy already exists. Overwrite?[y,n,a] y
| Finished generation for domain class com.arturoherrero.Post