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

标签 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)
}

最佳答案

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

myDomainEmc.save = {-> true}

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

关于grails - 没有方法签名:save()适用于参数类型:()值:[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150801/

相关文章:

Grails:addTo* 和removeFrom* 是否需要调用来保存?

grails - 如何声明插件依赖关系

grails - Grails 服务中的服务声明错误

grails - Grails GORM通过Domain映射内的值查找

hibernate - 如何在 Grails 中持久保存枚举集合?

grails - Grails独特的约束-它会同时起作用吗?

grails - 域类中的更新未存储到数据库中

grails - 如何有条件地禁用表单输入字段

grails - 为什么未刷新的域对象在丢弃后不恢复到它们的 "saved"状态?我可以获得 "clean"版本吗?

grails - 在Grails(2.4.3)插件上看不到更新