我们正在尝试将现有Grails 1.x应用程序从1.x升级到2.x(当前使用2.2.1)。一个单元测试失败了,我被卡住了。以下是测试的内容......
服务 -
def saveSomeData(myDomain) {
return myDomain.save(flush:true)
}
服务测试 -
void testShouldSaveAndReturnTrue() {
def myDomainEmc = new ExpandoMetaClass(MyDomain)
myDomainEmc.save = {flush -> true}
myDomainEmc.initialize()
myDomainEmc.metaClass = myDomainEmc
assertTrue myTestService.saveSomeData(myDomainEmc)
}
答案 0 :(得分:3)
从错误消息中,看起来save()
被调用,没有任何参数。尝试添加no-arg save()
方法:
myDomainEmc.save = {-> true}
另外,我建议使用Grails 2 @Mock
注释来模拟域对象,以节省必须使用ExpandoMetaClass
处理所有可能的方法调用。