2011-07-28 11 views
1

Grailsの初心者のビット。私は、カスケードは、それらの間の機能を削除しテストするいくつかのコードを書かれているGrails - GORM関係のテスト

class Accommodation 
    { 
     String id 
     String name 

     static hasMany = [ accommodationDescription : AccommodationDescription ] 

    } 

    class AccommodationDescription 
    { 
     // Accommodation 
     Accommodation accommodation 

     // Description 
     Description description 

     static belongsTo = [accommodation : Accommodation] 
    } 

:私はそうのようなhasManyの関係とリンク2つのドメインオブジェクトを持っています。私の質問は二重です:

  1. 私はユニットテストでこれを行うことを望んでいます - これは正しい/適切ですか?

  2. Iカスケードはそうよう、削除しようと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に設定されているとは思いません。データベースからデータを削除すると、インスタンスは休止状態のセッションから切り離されます。格納されているオブジェクトのデータは、一時的なインスタンスとしてメモリに残ります。

テストでオブジェクトが削除されたことを確認するには、IDでget()を試してみるか、findBy()メソッドを使用してみてください。それから、何も見つからなかったと主張する。

関連する問題