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

最佳答案

从错误消息中,看起来save()正在被调用而没有任何参数。尝试添加一个无参数的save()方法:

myDomainEmc.save = {-> true}

此外,我建议使用Grails 2的@Mock批注来模拟域对象,以免不得不使用ExpandoMetaClass处理所有可能的方法调用。

08-28 04:06