FakeApplication naprawdę nie obiad proces internetowej, więc nie można przetestować za pomocą http dostęp do localhost.
Masz trzy opcje:
- testowania kontrolera bezpośrednio
- Testing router
- Testowanie cała aplikacja.
Testowanie kontrolera odbywa się poprzez bezpośrednie wywołanie kontroler i sprawdzanie wyniku, jak zasugerowano w dokumentacji gry i zapewniając FakeRequest()
val result = controllers.Application.index("Bob")(FakeRequest())
Testowanie routerem odbywa się poprzez wywołanie routeAndCall z FakeRequest argument określający ścieżkę względną:
val Some(result) = routeAndCall(FakeRequest(GET, "/Bob"))
Ostatecznie, jeśli chcesz przetestować całą aplikację, trzeba rozpocząć TestServer:
"run in a server" in {
running(TestServer(3333)) {
await(WS.url("http://localhost:3333").get).status must equalTo(OK)
}
}
Twoje pytanie brzmi: "Jaka jest najlepsza opcja?". Odpowiedź brzmi: nie ma niczego takiego jak najlepsza opcja, istnieją różne sposoby testowania dla różnych celów. Powinieneś wybrać strategię testowania, która lepiej pasuje do twoich wymagań. W tym przypadku, ponieważ chcesz przetestować router, sugeruję, abyś spróbował podejść n.2
dzięki, że to ma sens, jednak nie wiem, co zrobić dla tras, ponieważ wracają 404, chyba że są zaimplementowane przez aplikacja nadrzędna. Próbowałem dodać podstawowy plik trasy w module tylko do testu, ale nie działa, chyba że usunę mymodule.routes – Roch
Jak je testujesz? – Edmondo1984
nazywając ich url używając API playframework WS – Roch