Как устанавливать объекты при функциональном тестировании граалей с помощью Спока
у нас есть пример домена, такого как этот
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
до запуска всех моих функциональных и интеграционных тестов?