2014-11-02 3 views
0

Im using Play Framework 2.0 - данный у меня есть Служба платежей, которая обращается к базам данных.Интеграционный тест Сервисный уровень Play Framework

Сегодня я проверить это первым розжиг тестового сервера:

// set up and start the fake web application 
FakeApplication fakeApp = fakeApplication(inMemoryDatabase()); 
start(fakeApp); 
// get the JPAPlugin through the fake app, and start it 
Option<JPAPlugin> jpaPlugin = fakeApp.getWrappedApplication().plugin(JPAPlugin.class); 
jpaPlugin.get().onStart(); 
// then through the JPA plugin, get access to the entity manager 
final EntityManager manager = jpaPlugin.get().em("default"); 
// and bind it in the thread local 
JPA.bindForCurrentThread(manager); 
JPA.em().getTransaction().begin(); 

После того, как это делается, я могу начать доступ к базе данных, вставьте предварительно состояние, выполнить методы на службе, и утверждаю (DB) post state

Но он не чувствует себя хорошо, чтобы запустить весь веб-сервер (даже если это поддельный сервер), когда я тестирую уровень сервиса только для получения доступа к диспетчеру сущностей.

Есть ли более разумный способ интеграции, чтобы проверить уровень обслуживания? Исходя из весеннего мира, я бы предположил, что должно быть возможно создать Менеджера сущностей вручную вместо того, чтобы сервер Play выполнял его для нас.

Любая помощь/советы/направления оценены.

ответ

0

Предлагаю использовать класс TestServer, а также класс Helpers. Вы можете использовать его для запуска в памяти экземпляра игры из теста junit, а затем запускать поддельные запросы против этого экземпляра. Экземпляр и ваши плагины будут инициализированы вашим application.conf.

Минимальная конфигурация:

app = fakeApplication(inMemoryDatabase()); 
server = Helpers.testServer(9009, app); 
webDriver = play.api.test.WebDriverFactory.apply(HTMLUNIT); 
Helpers.start(server); 
browser = Helpers.testBrowser(webDriver); 

Фактическое испытание:

Result result = Helpers.route(Helpers.fakeRequest(GET, "/data...")); 
assertNotNull(result); 

И не забудьте очистить:

browser.quit(); 
Helpers.stop(server); 
+0

спасибо, работает как шарм! –

+0

Я рад, что смогу помочь. –

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