使用Play 2.2.3框架,假设我的路由文件中有一条类似这样的路由:
GET /event controllers.Event.events
如何以编程方式知道我要尝试的方法(在本例中为“ controllers.Authentication.authenticate”),使“ / event”?
我出于测试目的需要它,因为我希望有更好的测试,而不是等待路由本身,而是等待真正调用的controllers方法。因此,也许还有另一种解决方法,而不是像现在一样以这种方式进行测试:
//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"
您可以通过以下方式构造反向路由:
[full package name].routes.[controller].[method]
在您的示例中:
controllers.routes.Authentication.authenticate
controllers.routes.Events.events
但是说您像controllers.auth
和那样拆开包装controllers.content
,那么它们将是:
controllers.auth.routes.Authentication.authenticate
controllers.content.routes.Events.events
反向路由返回Call
,其中包含HTTP方法和URI。在测试中,您可以使用构造FakeRequest
一个Call
:
FakeRequest(controllers.routes.Authentication.authenticate)
您还可以使用它来测试重定向URI:
val call: Call = controllers.routes.Events.events
redirectLocation(loginResult) must beSome(call.url)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句