Grails: как выполнить модульное тестирование командного объекта с введенной в него службой

Я пытаюсь проверить контроллер, который имеет объект Command с привязкой данных.

Командный объект имеет сервис, внедренный в него.

Но когда я пытаюсь проверить объект команды, внедренный метод обслуживания никогда не будет найден, как никогдавпрыскивается»

Есть ли способ смоделировать сервис внутри объекта команды?

Метод испытания

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
}

GetUser () метод userService не являетсят нашел

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

Код

Метод входа в систему вызываемого контроллера,

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')
  }
}

Командный объект имеет "UserService» впрыснут в это.

Валидатор вызывает этот userService, чтобы найти пользователя

 class LoginCommand {

    def userService

    String login
    String password

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

UserService.getUser () выглядит следующим образом.

class UserService {

    boolean transactional = true

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

    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос