没有方法签名:save()适用于参数类型:()值:[]

时间:2013-04-22 15:25:16

标签: grails grails-2.0

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

1 个答案:

答案 0 :(得分:3)

从错误消息中,看起来save()被调用,没有任何参数。尝试添加no-arg save()方法:

myDomainEmc.save = {-> true}

另外,我建议使用Grails 2 @Mock注释来模拟域对象,以节省必须使用ExpandoMetaClass处理所有可能的方法调用。