2013-04-22 99 views
0

我们试图将现有的Grails 1.x应用程序从1.x升级到2.x(使用2.2.1的当前版本) 。一个单元测试失败,我被卡住了。下面是测试正在做......没有方法签名:save()适用于参数类型:()values:[]

服务 -

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

你看过吗? [http://grails.org/doc/latest/guide/testing.html#unitTestingDomains](http://grails.org/doc/latest/guide/testing.html#unitTestingDomains) – 2013-04-23 14:05:45

回答

2

从错误信息,它看起来像save()被称为地方不带任何参数。尝试添加一个无参数save()方法:

myDomainEmc.save = {-> true} 

另外,我建议你使用的Grails 2 @Mock标注为嘲弄域对象,省去处理所有可能的方法有ExpandoMetaClass调用。

+0

@Mock(MyDomain),已添加到Unittest类,为我解决了这个问题(grails 2.1.0): – Heri 2015-05-07 20:28:28

相关问题