2011-07-28 32 views
1

這裏是Grails的新手。我有一個像這樣一個的hasMany關係鏈接2個域對象:Grails - 測試GORM關係

class Accommodation 
    { 
     String id 
     String name 

     static hasMany = [ accommodationDescription : AccommodationDescription ] 

    } 

    class AccommodationDescription 
    { 
     // Accommodation 
     Accommodation accommodation 

     // Description 
     Description description 

     static belongsTo = [accommodation : Accommodation] 
    } 

我已經寫了一些代碼,測試級聯他們之間的刪除功能。我的問題是雙重的:

  1. 我要做到這一點在單元測試 - 這是正確的/合適嗎?

  2. 我試圖級聯刪除像這樣一個的testXXX(..)方法:

    空隙testAccDescDelete()

    {

    Accommodation acc = ...create a populated instance 
    
    assert acc.save() // this passes! 
    
    acc.delete() // no errors here 
    
    assert ! acc.hasErrors() // this passes! 
    
    assert acc.accommodationDescription == null // this fails. 
    

    }

但是這不起作用,斷言失敗。有人能告訴我爲什麼嗎?

回答

0

我不認爲在對象上調用delete會將所有字段設置爲null。它從數據庫中刪除數據,實例從休眠會話中分離出來。包含對象中的數據作爲瞬態實例保留在內存中。

要驗證對象是否已在您的測試中被刪除,您可以嘗試get()通過ID或使用findBy()方法。然後斷言沒有發現任何東西。