Tôi đã thử trong Bài kiểm tra Đơn vị của mình để kiểm tra việc gửi biểu mẫu trùng lặp như trong tài liệu và nó hoạt động. http://grails.github.io/grails-doc/3.0.x/guide/testing.html#unitTestingControllersKiểm tra Tích hợp Grails - Bản sao Biểu mẫu Trùng lặp luôn không hợp lệToken
Nhưng trong Kiểm tra tích hợp của tôi, nó luôn thất bại và được đánh dấu là invalidToken. Tôi viết nó theo cách tương tự như kiểm thử đơn vị trong phần của tokenHolder.
Vậy cách xử lý mã thông báo hợp lệ vớiForm trong Kiểm tra tích hợp?
My Integration Test:
@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'
}
}
Controller:
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]
}
}