大多數單元測試不希望或者不需要應用程序上下文全部啓動和填充。單元測試可以嚮應用程序上下文添加任何他們想要的(或者什麼都不)。在最新版本的Grails,你可以做這樣的事情......
控制器和命令對象:
// grails-app/controllers/demo/DemoController.groovy
package demo
class DemoController {
def processName(SomeCommand co) {
render co.someValue
}
}
class SomeCommand {
String name
def helperService
def getSomeValue() {
helperService.processValue(name)
}
}
服務:
// grails-app/services/demo/HelperService
package demo
class HelperService {
def processValue(String originalValue) {
"__${originalValue}__"
}
}
單元測試:
// grails-app/test/unit/demo/DemoControllerSpec.groovy
package demo
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(DemoController)
class DemoControllerSpec extends Specification {
def doWithSpring = {
helperService HelperService
}
void 'process name'() {
when:
params.name = 'Jeff'
controller.processName()
then:
response.contentAsString == '__Jeff__'
}
}
該測試將通過Grails 2.4.2。
我希望有幫助。
@danielad:請不要添加代碼跨度('像這樣')來強調。有關更多信息,請參見[此Meta帖子](http://meta.stackexchange.com/a/165710)。 –