मैं डॉक्स में तरह डुप्लीकेट प्रपत्र प्रस्तुत करने का परीक्षण करने के लिए अपने यूनिट टेस्ट में की कोशिश की है और यह काम किया। http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllersGrails एकता टेस्ट - डुप्लिकेट फ़ॉर्म सबमिशन हमेशा 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]
}
}