2014-06-25 15 views
6

Korzystanie ramy play 2.2.3, ponieważ mam trasy podobny do tego w moich trasach file:play 2 odwrotnego trasowania, dostać trasę z metody kontrolera

GET   /event         controllers.Event.events 

Jak można programowo uzyskać „/ event "znając metodę, którą próbuję osiągnąć, w tym przypadku" controllers.Authentication.authenticate "?

Potrzebuję go do celów testowych, ponieważ chciałbym mieć lepszy test, nie czekając na samą trasę, ale na samą metodę kontrolerów. Więc może nie ma innego rozwiązania niż uzyskanie trasę i sprawdzić to w ten sposób, tak jak ja teraz:

//Login with good password and login 
    val Some(loginResult) = route(FakeRequest(POST, "/login").withFormUrlEncodedBody(
     ("email", email) 
     , ("password", password))) 
    status(loginResult)(10.seconds)  mustBe 303 
    redirectLocation(loginResult).get mustBe "/event" 

Odpowiedz

25

skonstruować odwrotną trasę w ten sposób:

[full package name].routes.[controller].[method] 

w Twojej przykładzie:

controllers.routes.Authentication.authenticate 
controllers.routes.Events.events 

Ale powiedzieć złamałeś swoje pakiety się jak controllers.auth i controllers.content, wtedy byliby:

controllers.auth.routes.Authentication.authenticate 
controllers.content.routes.Events.events 

Odwrotne trasy zwracają wartość Call, która zawiera metodę HTTP i identyfikator URI. W swoich badaniach można skonstruować FakeRequest z Call:

FakeRequest(controllers.routes.Authentication.authenticate) 

I można również używać do testowania przekierowania URI:

val call: Call = controllers.routes.Events.events 
redirectLocation(loginResult) must beSome(call.url) 
+0

Idealne dziękuję – sam

Powiązane problemy