【发布时间】:2013-05-10 15:46:14
【问题描述】:
我正在尝试在 Grails 2.2.1 应用程序中模拟由 shiro 插件生成的 Role 类。当我运行单元测试时,我收到了这个错误,看起来好像没有添加动态方法。
这是角色类:
class Role {
String name
static hasMany = [ users: User, permissions: String ]
static belongsTo = User
static constraints = {
name nullable: false, blank: false, unique: true
}
}
这是单元测试:
@TestFor(UserService)
@TestMixin(DomainClassUnitTestMixin)
@Mock([User, Role])
class UserServiceTests {
void testSaveFacebookUser(){
//given
def adminRole = new Role(name: RoleEnum.ADMIN.name)
adminRole.addToPermissions("*:*")
adminRole.save()
}
}
堆栈跟踪:
Running 1 unit test... 1 of 1
Failure: testSaveFacebookUser(a4o.services.UserServiceTests)
groovy.lang.MissingMethodException: No signature of method: a4o.Role.addToPermissions() is applicable
for argument types: (java.lang.String) values: [*:*]
更新
在 JIRA 上找到了这个,但它说它已于 2.0.4 http://jira.grails.org/browse/GRAILS-8779 关闭。也许它又开了。
【问题讨论】:
-
您是在对
domain还是service进行单元测试?我认为如果是服务,那么@TestFor就足够了,你不需要@TestMixin。
标签: unit-testing grails mocking