Unit testing grails-单元测试
我很难对域中包含的方法进行单元测试,如下所示: 这是域类Unit testing grails-单元测试,unit-testing,grails-domain-class,Unit Testing,Grails Domain Class,我很难对域中包含的方法进行单元测试,如下所示: 这是域类 class UserRole implements Serializable { User user Role role static void removeAll(User user) { executeUpdate 'DELETE FROM UserRole WHERE user=:user', [user: user] } } 然后在服务中: class Co
class UserRole implements Serializable {
User user
Role role
static void removeAll(User user) {
executeUpdate 'DELETE FROM UserRole WHERE user=:user', [user: user]
}
}
然后在服务中:
class CorporateUserService {
def delete (def cifUserInstance) {
def userDetail,users,userRole
userDetail=UserDetails.findById(cifUserInstance.userDetails.id)
users=User.findById(userDetail.user.id)
userRole=UserRole.removeAll(users)
}
}
在单元测试中:
void testDelete(){
def cifUserService = new CorporateUserService()
mockDomain(UserRole,[])
def newuserRole2=UserRole.create(user,role2)
def newuserRole=UserRole.create(user,role)
newuserRole.executeUpdate 'DELETE FROM UserRole WHERE user= :user',[user: user]
try{
cifUserInstance = cifUserService.delete(cifUser)
}
catch(RuntimeException e){
println e
}
}
我有这样一个错误:
“groovy.lang.MissingMethodException:
无方法签名:
com.logika.corp.security.UserRole.executeUpdate()
适用于参数类型:
(java.lang.String,
java.util.LinkedHashMap)值:
[从用户角色中删除,其中用户=
:user,[user:user1]]
有人知道如何修复这个错误吗 试试看:
newuserRole.executeUpdate 'DELETE FROM UserRole WHERE user= :user',user
看见
我希望有帮助 这里的问题是Grails在运行时添加了很多动态方法。mockDomain()方法添加动态findBy。。。方法等,但它没有添加executeUpdate动态方法 所以你有两个选择 1/将单元测试移动到集成测试文件夹。这样grails就创建了一个完整的运行时环境,并将添加所有动态类。(以牺牲较慢的运行时间为代价) 或 2/模拟executeUpdate的行为,以便您只需测试自己的代码。(您不一定要对grails代码进行单元测试?) e、 g
registerMetaClass(UserRole )
UserRole.metaClass.static.executeUpdate={String query, Map items-> println "Mocking executeUpdate"}