我有一个像这样的示例域
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)
}
}
}
the 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
}
}
Update
控制器:
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
在运行我的所有功能和集成测试用例之前?