2011-07-20 81 views
3

我在NetBeans中使用Grails 1.3.2。我有失敗,此錯誤非常簡單的單元測試:調用.save()在域類上失敗,沒有方法的簽名.save()在單元測試

No signature of method: com.maxrecall.maxrequire.domain.Release.save() is applicable for argument types: (java.util.LinkedHashMap) values: [[flush:true]] Possible solutions: wait(), any(), wait(long), isCase(java.lang.Object), use([Ljava.lang.Object;), sleep(long)

相關的代碼是:

Release rel = new Release() 
... 
rel.save(flush:true) 

相同的代碼工作BootStrap.groovy中。我曾嘗試在.save()(.Save各種變化有和沒有參數。

回答

7

這是一個單元測試,所以沒有春天,休眠,等你來嘲笑你想要的行爲。

如果你正在測試的持久性,需要將測試轉換爲一個集成測試,因爲用單元測試測試持久性只是測試模擬框架,集成測試至少使用一個內存數據庫,儘管您可以輕鬆地將其切換爲MySQL/Oracle /等的測試實例。

如果您正在測試控制器或您的域類的其他用戶,並且希望他們能夠工作以便您可以專注於測試當前類,請使用mockDomain和Grails單元測試基類中提供的其他模擬方法。

這全部在文檔中詳細描述 - 參見http://grails.org/doc/latest/guide/9.%20Testing.html

2

有沒有Grails的在單元測試(它的存在在集成測試)魔法周圍。請參見「瞭解mockDomain()」 here或閱讀Grails docs

相關問題