Dokümanlarda olduğu gibi yinelenen form gönderimini test etmek için Ünite Testimde denedim ve işe yaradı. http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllersGrails Integration Test - Yinelenen Form Gönderme her zaman invalidToken
Ancak Entegrasyon Testimde her zaman başarısız oldu ve invalidToken olarak işaretlendi. Ben tokenHolder'ın bölümünde birim testi gibi yazdım.
Entegrasyon Testinde, geçerli belirteci ForForm ile nasıl kullanacağız?
Benim Entegrasyon Testi:
@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'
}
}
Denetleyici: entegrasyonunda
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]
}
}