【发布时间】:2011-08-16 05:22:33
【问题描述】:
我确信这是一种相当普遍的情况。我正在使用 Spring Security Core 插件并希望创建一个域模型,该模型的 Person 仅限于某些角色:
class Workgroup {
Person manager
...
static constraints = {
manager(validator: {mgr ->
// it feels like there should be a more elegant, groovy way of doing this.
def auths = mgr.getAuthorities();
def returny = false
auths.each {
if(it.authority == 'ROLE_MANAGER')
{
returny = true
}
}
return returny
})
}
}
这个测试像 mofo 一样失败:
void testInvalidManager() {
def nick = new Person(username:'Nick')
def nonManagerRole = new Role(authority:'ROLE_EMPLOYEE')
UserRole.create(nick,nonManagerRole)
def awesome = new Workgroup(name:'mooCows', manager:nick)
mockForConstraintsTests(Workgroup, [awesome])
assertFalse awesome.validate()
assertEquals "validator", awesome.errors["manager"]
}
testInvalidManager 错误没有方法签名:users.UserRole.save() 适用于参数类型:(java.util.LinkedHashMap) 值:[[flush:false, insert:true]] 可能的解决方案:wait(), any(), wait(long), use([Ljava.lang.Object;), isCase(java.lang.Object), each(groovy.lang.Closure)
groovy.lang.MissingMethodException:没有方法签名:users.UserRole.save() 适用于参数类型:(java.util.LinkedHashMap) 值:[[flush:false, insert:true]] 可能的解决方案:wait()、any()、wait(long)、use([Ljava.lang.Object;)、isCase(java.lang.Object)、each(groovy.lang.Closure) 在 users.UserRole.create(UserRole.groovy:32) 在 users.UserRole.create(UserRole.groovy) 在 users.UserRole$create.call(Unknown Source) 在 users.WorkgroupTests.testInvalidManager(WorkgroupTests.groovy:17)
集成比单元测试更能涵盖这方面的内容吗?我是否需要模拟 UserRole (如果需要,如何?)?这些类型的测试通常是如何进行的?
【问题讨论】:
标签: unit-testing grails spring-security grails-orm