我試圖模擬Grails 2.2.1應用中由shiro插件生成的Role類。當我運行單元測試時,我得到這個錯誤,看起來像動態方法沒有添加。Grails領域類未被模擬
這是角色類:
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: [*:*]
UPDATE
在JIRA上發現了這個,但它說它已關閉2.0.4 http://jira.grails.org/browse/GRAILS-8779。也許它再次打開。
你是單元測試'domain'還是'service'?我認爲如果它是服務,那麼'@ TestFor'就足夠了,你不需要'@ TestMixin'。 – dmahapatro 2013-05-10 17:38:27