mocking command object in grails controller results in hasErrors() return false no matter what! Plea

Posted by egervari on Stack Overflow See other posts from Stack Overflow or by egervari
Published on 2010-05-27T04:08:31Z Indexed on 2010/05/27 4:11 UTC
Read the original article Hit count: 239

Filed under:
|
|
|
|

I have a controller that uses a command object in a controller action. When mocking this command object in a grails' controller unit test, the hasErrors() method always returns false, even when I am purposefully violating its constraints.

 def save = { RegistrationForm form ->
  if(form.hasErrors()) {
   // code block never gets executed
  } else {
   // code block always gets executed
  }
 }

In the test itself, I do this:

 mockCommandObject(RegistrationForm)
 def form = new RegistrationForm(emailAddress: "ken.bad@gmail",
  password: "secret", confirmPassword: "wrong")

 controller.save(form)

I am purposefully giving it a bad email address, and I am making sure the password and the confirmPassword properties are different. In this case, hasErrors() should return true... but it doesn't. I don't know how my testing can be any where reliable if such a basic thing does not work :/

Here is the RegistrationForm class, so you can see the constraints I am using:

class RegistrationForm {
 def springSecurityService

 String emailAddress
 String password
 String confirmPassword

 String getEncryptedPassword() {
  springSecurityService.encodePassword(password)
 }

 static constraints = {
  emailAddress(blank: false, email: true)
  password(blank: false, minSize:4, maxSize: 10)
  confirmPassword(blank: false, validator: { confirmPassword, form ->
   confirmPassword == form.password
  })
 }
}

© Stack Overflow or respective owner

Related posts about unit-testing

Related posts about grails