Я пробовал в своем модульном тесте, чтобы протестировать повторную подачу формы, как в документах, и это сработало. http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllersТест интеграции с Grails - Повторная подача формы всегда invalidToken
Но в моем тесте интеграции он всегда терпел неудачу и помечен как invalidToken. Я пишу его так же, как модульный тест в стороне tokenHolder.
Итак, как обрабатывать действительный токен withForm в тесте интеграции?
Моя Интеграция Тест:
@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]
}
}