FakeApplication действительно не обед веб-процесс, так что вы не можете проверить с помощью доступа HTTP к локальной машине.
У вас есть три варианта:
- Тестирование контроллера непосредственно
- Testing маршрутизатор
- Тестирование все приложение.
Тестирование контроллера осуществляется с помощью прямого вызова контроллера и проверки результатов, как это было предложено в игровой документации, а также обеспечение FakeRequest()
val result = controllers.Application.index("Bob")(FakeRequest())
Тестирование маршрутизатора осуществляется вызовом routeAndCall с FakeRequest аргумент, указав относительный путь:
val Some(result) = routeAndCall(FakeRequest(GET, "/Bob"))
в конце концов, если вы хотите проверить всю вашу заявку, вы должны начать TestServer:
"run in a server" in {
running(TestServer(3333)) {
await(WS.url("http://localhost:3333").get).status must equalTo(OK)
}
}
В вашем вопросе говорится: «Какой вариант лучше?». Ответ таков: нет ничего такого, как лучший вариант, есть разные способы тестирования для разных целей. Вы должны выбрать стратегию тестирования, которая лучше соответствует вашим требованиям. В этом случае, поскольку вы хотите протестировать маршрутизатор, я предлагаю вам попробовать подход n.2
спасибо, что это имеет смысл, однако я не знаю, что делать для маршрутов, потому что они возвращают 404, если они не реализованы родительского приложения. Я попытался добавить основной файл маршрута в модуль только для теста, но он не работает, если я не удалю mymodule.routes – Roch
Как вы их тестируете? – Edmondo1984
, вызвав их URL-адрес, используя playframework WS api – Roch