【发布时间】:2015-02-05 12:53:37
【问题描述】:
我想使用动作组合来测试控制器动作。 下面是组合操作及其测试代码的示例。
安全特性:
trait Secured {
def username(request: RequestHeader) = request.session.get(Security.username)
def onUnauthorized(request: RequestHeader) = Results.Redirect(routes.Auth.login)
def withAuth(f: => String => Request[AnyContent] => Result) = {
Security.Authenticated(username, onUnauthorized) { user =>
Action(request => f(user)(request))
}
}
控制器:
MyController extends Contrller with Secured {
def simple = Action { Ok("ok") }
def simpleWithauth = withAuth { implicit username => implicit request=> Ok("ok") }
}
测试代码:
// This work fine
val result1 = controller.simple()(FakeRequest())
// This wont compile
val result2 = controller.simpleWithAuth()(FakeRequest())
后者需要 Request[Action[AnyContent], AnyContent] 但 FakeRequest 返回一个 Request[AnyContent]
关于如何创建适当类型的虚假请求的任何指示?
【问题讨论】:
标签: unit-testing scala playframework-2.0