我正在爲一些簡單的方法編寫單元測試。我遇到的問題是'保存'不適用於我的域對象,即使該域應該被嘲弄。當在域對象上調用驗證時,它返回爲true。我甚至用try/catch來包圍這個對象,以確保它沒有拋出任何奇怪的錯誤,但事實並非如此。以下代碼用於調用和測試。Grails mockDomain保存不保存
void test()
{
mockDomain(MyDomain)
Map map1= ["asdf":" "]
Map map2 = ["asdf":123]
InputObject input = new InputObject()
input.setForeignId("1") //not a constraint
input.setMap1(map1)
input.setMap2(map2)
service.methodUnderTest(profile)
List list = MyDomain.getAll()
assertEquals 1, l.size() //FAILS
}
def persistPublishGuids(InputObject input)
{
try{
HashMap map1 = input.map1
for (e in map1)
{
String key= e.getKey()
String value = e.value
long size = input.map2.get(key)
MyDomain domain = new MyDomain (id:guid, field1:value, field2:input.foreignId, field3:size)
domain.save()
}
} catch(ex)
{
ex.printStackTrace()
}
}
它如果這是[sscce](http://sscce.org/),可能會有所幫助。你發佈的內容不能單獨運行。嘗試製作一個最簡單的例子,它將執行並重現問題併發布。這樣做可能會發現問題的根源,如果不是的話,您將有更清晰的例子供人幫助。 – ig0774
我會,但我知道了。需要運行grails clean,然後在STS中清理/重建項目。我只發現了這一點,因爲當我今天早上開始寫另一個測試時,它聲稱我的一個域對象上沒有方法「save()」。谷歌搜索導致我清潔和重建解決方案。 – Joseph