Grails 方法:save()的签名不适用于参数类型:()值:[]

Grails 方法:save()的签名不适用于参数类型:()值:[],grails,grails-2.0,Grails,Grails 2.0,我们正在尝试将现有的Grails1.x应用程序从1.x升级到2.x(目前使用的是2.2.1)。一个单元测试失败了,我被卡住了。下面是测试正在做的 服务- def saveSomeData(myDomain) { return myDomain.save(flush:true) } 服务测试- void testShouldSaveAndReturnTrue() { def myDomainEmc = new ExpandoMetaClass(MyDomain) myDo

我们正在尝试将现有的Grails1.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)
}

从错误消息看,似乎正在某个没有任何参数的地方调用
save()
。尝试添加无参数
save()
方法:

myDomainEmc.save = {-> true}

另外,我建议使用grails2
@Mock
注释来模拟域对象,以避免使用
ExpandoMetaClass
处理所有可能的方法调用。从错误消息看,似乎在没有任何参数的地方调用了
save()
。尝试添加无参数
save()
方法:

myDomainEmc.save = {-> true}
另外,我建议使用grails2
@Mock
注释来模拟域对象,以避免使用
ExpandoMetaClass处理所有可能的方法调用。您看过这个吗?你看过这个吗@Mock(MyDomain),添加到Unittest类,为我解决了问题(grails 2.1.0):@Mock(MyDomain),添加到Unittest类,为我解决了问题(grails 2.1.0):