【发布时间】:2015-04-30 08:19:00
【问题描述】:
我已经在我的单元测试中尝试像在文档中一样测试重复的表单提交并且它有效。 http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllers
但在我的集成测试中,它总是失败并标记为 invalidToken。我用与tokenHolder部分的单元测试相同的方式编写它。
那么如何在集成测试中用Form处理有效的token呢?
我的集成测试:
@TestFor(RegisterTestedController)
class RegisterTestedControllerIntSpec extends Specification {
void "test insert data register"() {
given:
controller.params.username == 'babaenciel'
controller.params.companyName == 'tamago'
when:
def tokenHolder = SynchronizerTokensHolder.store(session)
params[SynchronizerTokensHolder.TOKEN_URI] = '/registerTested/signUp'
params[SynchronizerTokensHolder.TOKEN_KEY] = tokenHolder.generateToken(params[SynchronizerTokensHolder.TOKEN_URI])
controller.signUp()
then:
controller.modelAndView.model.parameter.username == 'babaenciel'
controller.modelAndView.model.parameter.companyName == 'tamago'
}
}
控制器:
class RegisterTestedController {
def signUp() {
log.info("session: " + session.properties)
log.info("request: " + request.properties)
log.info("params: " + params)
def invalidToken = false
withForm {
invalidToken = false
}.invalidToken {
invalidToken = true
}
log.info("invalid token: " + invalidToken)
if(invalidToken) {
flash.code = 'alert-red'
flash.message = message(code: "error.general.multipleSubmission")
redirect action:'index'
return
}
render view: 'index', model: [parameter: params]
}
}
【问题讨论】:
标签: grails integration-testing