2013-02-17 5 views
0

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

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

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

class ReportServiceTests extends GriffonUnitTestCase { 
    GriffonApplication app 

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

, но я не могу разжиться действительной службы - оба Println заявления выше продукции «[:]».

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

Спасибо.

ответ

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

+0

Спасибо - я использовал метод установки(), чтобы найти свою службу через менеджер службы и все хорошо. Еще раз спасибо за потрясающую структуру и поддержку! ReportService ReportService защищен недействительная нАлАдкА() { super.setUp() ReportService = app.serviceManager.findService ('ReportService') } – prule

Смежные вопросы