Grails - тестирование отношений GORM - PullRequest
1 голос
/ 28 июля 2011

Немного новичка в Grails здесь. У меня есть 2 доменных объекта, связанных с отношением hasMany, например:

    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 (..), который пытается выполнить каскадное удаление следующим образом:

    void 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.
    

    }

Но это не работает, и утверждение не выполняется. Может кто-нибудь сказать, пожалуйста, почему?

1 Ответ

0 голосов
/ 28 июля 2011

Я не верю, что вызов delete для объекта устанавливает все поля в null. Он удаляет данные из базы данных, и экземпляр отключается от сеанса гибернации. Данные в вашем содержащем объекте остаются в памяти как временный экземпляр.

Чтобы убедиться, что объект был удален в вашем тесте, вы можете попробовать get() идентифицировать его или использовать метод findBy(). Тогда утверждают, что ничего не найдено.

...