2013-04-22 79 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

相關問題