Грааль с критерием тестирования - PullRequest
7 голосов
/ 24 мая 2010

Я бы хотел проверить закрытие withCriteria и не уверен, как это сделать. Я вижу, как смоделировать вызов withCriteria, но не тестировать код внутри замыкания. При запуске теста, который выполняет «withCriteria», я получаю исключение MissingMethodException, даже если код работает нормально при нормальном потоке выполнения. Есть идеи? Спасибо! Стив

Ответы [ 4 ]

14 голосов
/ 24 мая 2010

Я бы не пошел по этому пути.Вместо этого я бы переместил запрос в класс домена как статический метод поиска и протестировал бы его непосредственно в интеграционном тесте с реальными данными.Затем вы можете легко смоделировать вспомогательный метод, когда он вызывается в контроллере или тесте службы.

class YourDomainClass {

...
   static List<YourDomainClass> findFooBar() {
      YourDomainClass.withCriteria {
         ...
      }
   }
}

Затем в модульном тесте:

def results = [instance1, instance2, instance3]
YourDomainClass.metaClass.static.findFooBar = { -> results }

Таким образом, вы проверяете, что запрос работаетс базой данных в памяти в интеграционном тесте, но ее легко смоделировать в модульных тестах.

1 голос
/ 08 января 2011

Поскольку никто не упомянул возможность создания DSL для запуска других DSL, здесь полностью раскрыто описание этого метода.Я использую его довольно часто с очень хорошими результатами.

Groovy / Grails тестирования DSLs

1 голос
/ 25 мая 2010

В дополнение к ответу Берта, проверьте именованные запросы, как описано здесь:

http://blog.springsource.com/2010/05/24/more-grails-1-3-features/

Затем вы можете смоделировать доступ к свойству / методу в своих модульных тестах, как описано Burt.

0 голосов
/ 24 мая 2010

В настоящее время нет ложной реализации критериев Hibernate.Вам нужно будет использовать интеграционные тесты.Однако рекомендация Берта о том, чтобы сделать этот метод статическим поиском, хороша для организации кода.Вам также следует взглянуть на именованные запросы, описанные в http://www.grails.org/1.2+Release+Notes,, для хорошего синтаксиса для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...