Интеграционные тесты Griffon с jpa

Я пишу приложение грифона с JavaFX и плагином JPA. У меня есть сервис, который я хотел бы протестировать. Этот сервис использует подключаемый модуль JPA (withJpa {...}), и именно этот доступ к базе данных я хочу протестировать.

Итак, я хочу написать этот тест, чтобы он вставлял некоторые данные, а затем проверял, что служба выдает правильный ответ, тем самым подтверждая правильность запроса sql.

Я написал простой тест:

class ReportServiceTests extends GriffonUnitTestCase {
    GriffonApplication app

    public void testStats() {
        println app.getServices()
        println app.getControllers()
    }
}

но я не могу получить действительную услугу - оба приведенных выше оператора println производят "[:]".

Как получить экземпляр ReportService и применить его к базе данных? Я не хочу издеваться над взаимодействием с базой данных.

Спасибо.


person prule    schedule 17.02.2013    source источник


Ответы (1)


Нет необходимости издеваться над базой данных. Как описано в http://griffon.codehaus.org/guide/latest/guide/testing.html#integrationTesting приложения достигают фазы INITIALIZE во время интеграционного тестирования. Аддоны инициализируются на этом этапе. Службы, с другой стороны, инициализируются лениво, поскольку они извлекаются членами MVC при создании экземпляра: они не создаются из коробки, если вы вызываете app.getServices(). Однако вы можете указать приложению с готовностью создавать экземпляры всех служб, это заставит ваш код работать должным образом; просто добавьте следующий флаг в Config.groovy

griffon.services.eager.instantiation = true

Дополнительную информацию об услугах можно найти по адресу http://griffon.codehaus.org/guide/latest/guide/controllersAndServices.html#services

person Andres Almiray    schedule 18.02.2013
comment
Спасибо - я использовал метод setup(), чтобы найти свою службу через диспетчер служб, и все хорошо. Еще раз спасибо за классный фреймворк и поддержку! ReportService reportService protected void setUp() { super.setUp() reportService = app.serviceManager.findService('reportService') } - person prule; 19.02.2013