0

Я соскабливаю веб-сайт, который ожидает параметры GET и cookie. Я хочу знать, отправляются ли правильные параметры и файлы cookie. Возможность тестирования HTTP-заголовков, POST-данных и т. Д. Будет очень полезна слишком поздно.Как протестировать вызовы WebService в Play 2.1?

Лучший способ сделать это, как мне кажется, запустить веб-сервер, вызвать код соскабливания URL-адреса, который указывает на веб-сервер, и посмотреть, все ли на сервере все правильно. Простой способ настроить внешний внешний веб-сервер также отлично подходит для тестирования интеграции.

Это просто такой код:

def getResource(a: String, b: String, c: String) = 
    WS.url("http://www.example.com") 
      .withQueryString("x" -> a, "y" -> b) 
      .withHeaders("Cookie" -> c) 
      .get() 

Я использую ScalaTest сделать мои модульные тесты.

Does Play обеспечивают что-либо, чтобы легко протестировать подобные вещи? Существуют ли другие удобные библиотеки, которые бы соответствовали моим потребностям?

ответ

2

Постарайся встроенный jetty внутри модульного тестирования, вы можете подделать внешний сервис так, как вы хотите

+0

Мне очень нравится, насколько проста библиотека Jetty, спасибо за ответ. – Daan

0

путь по умолчанию для тестирования Play 2 приложения является использование specs2. В вашем случае можно использовать functional tests для тестирования веб-сервера, как:

"run in a server" in new WithServer { 
    await(getResource(a,b,c)).status must equalTo(OK) 
} 

См documentation для тестирования Play 2 приложений.

+0

Этот метод предназначен для тестирования самого приложения, он не позволяет вам проверить, правильно ли вы вызываете внешние службы. – Daan

+0

Да, вы правы, 'WithServer' запускает внутренний сервер. И можно опустить. Но этот метод позволяет вам проверять любую функцию, включая вызовы внешних служб. Почему нет? – krispo

+0

Я хочу проверить, действительно ли HTTP-запрос поступает так, как следует, с правильными параметрами заголовков/GET/POST-данными на внешней службе. И я хочу сделать это без фактического вызова внешней службы, поскольку она может не реагировать очень быстро, она может быть недоступна, вызов службы может вызвать те вещи, которые я не хочу запускать во время теста (ограничения доступа к API, запросы POST, которые мутировать данные на внешнюю службу) и т. д. Я в основном хочу издеваться над внешним HTTP-сервером, проверять, получает ли он запросы и выполняет некоторые проверки данных запроса. – Daan

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