Grails: ¿Cómo pruebas unitarias de un objeto de comando con un servicio inyectado en él?

Estoy intentando probar un controlador que tiene un objeto de comando con enlace de datos.

El objeto de comando tiene un servicio inyectado en él.

Pero cuando intento probar el objeto de comando, el método de servicio inyectado nunca se encuentra, ya que nunca se "inyecta"

¿Hay una manera de burlarse de un servicio dentro de un objeto de comando?

Método de prueba

void testLoginPasswordInvalid() {
    mockRequest.method = 'POST'
    mockDomain(User, [new User(login:"freddy", password:"realpassword")])
    mockLogging(UserService) // userService mocked
    MockUtils.prepareForConstraintsTests(LoginCommand)

    def userService = new UserService()
    def user = userService.getUser("freddy")//Gets called and returns the mockDomain
    assert userService.getUser("freddy")//Passes

    def cmd = new LoginCommand(login:"freddy", password:"letmein")
    cmd.validate() // Fails (userService is nevr injected)
    controller.login(cmd)
    assertTrue cmd.hasErrors()
    assertEquals "user.password.invalid", cmd.errors.password
    assertEquals "/store/index", renderArgs.view
}

El método getUser () del servicio de usuario no se encuentra

Cannot invoke method getUser() on null object
java.lang.NullPointerException: Cannot invoke method getUser() on null object

Código

El método de inicio de sesión del controlador que se llama,

def login = { LoginCommand cmd ->
  if(request.method == 'POST') {
     if(!cmd.hasErrors()){
       session.user = cmd.getUser()
       redirect(controller:'store')
     }
     else{
       render(view:'/store/index', model:[loginCmd:cmd])
     }
  }else{

    render(view:'/store/index')
  }
}

El objeto de comando tiene un "servicio de usuario" inyectado en él.

El validador llama a este servicio de usuario para encontrar un usuario.

 class LoginCommand {

    def userService

    String login
    String password

    static constraints = {
      login blank:false, validator:{ val, cmd ->
          if(!cmd.userService.getUser()){
             return "user.not.found"
          }
      }
 }

El userService.getUser () tiene este aspecto.

class UserService {

    boolean transactional = true

    User getUser(String login) {
        return User.findByLogin(login)

    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta