Как устанавливать объекты при функциональном тестировании граалей с помощью Спока

у нас есть пример домена, такого как этот

class User {
    String username
    String password

    def userHelper

    static contraints = {
        username(nullable: false, blank: false)
        password nullable: false, blank: false, validator: {pwd, userInstance ->
            return userInstance.userHelper.validatePassword(pwd)
        }
    }
}

userHelper вводится следующим в моемresources.groovy

beans = {
    userHelper(UserHelper)
}

Когда я тестирую свое приложение из браузера, все работает нормально. Тем не менее, я получаю исключение при попытке написать функциональные тесты для этого.

Ошибка говорит:Cannot invoke method validatePassword() on null object

Так что я'м при условии, чтоuserHelper не устанавливается при запуске моего функционального теста.

Мой тестовый пример выглядит так:

 @TestFor(UserController)
 @Mock([User])

class UserControllerSpecification extends Specification {


    def "save user" () {
        given:
            request.contentType = "application/json"
            request.JSON = """
                            {user:
                                {
                                    username: "somtething"
                                    password: "something"
                                }
                            }
                        """
        when: 
            controller.save()

        then:
            User.count() == 1
    }
}

Обновить

контроллер:

class UserController {
    def userService
    def save() {
        def user = new User(params?.user)
        request.withFormat {
            json {
                if(user.validate())
                  userService.processUser()
                  //do something
                else
                  //do something else
            }
        }
    }
}

Вопросы

Как я могу установитьuserHelper собственность наUser домен до запуска моих тестов?Как я могу запустить свой код вBootstrap.groovy до запуска всех моих функциональных и интеграционных тестов?

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

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