【发布时间】:2013-10-27 11:08:32
【问题描述】:
我正在尝试测试使用新的Action.async 的控制器。在documentation 之后,我已经排除了控制器下的部分,我想测试以将特征与类型引用分开:
trait UserController { this: Controller =>
def index() = Action { /* snip */ }
def register() = Action.async(parse.json) { request => /* snip */ }
}
文档说明我应该将其测试为:
object UsersControllerSpec extends PlaySpecification with Results {
class TestController() extends Controller with UserController
"index action" should {
"should be valid" in {
val controller = new TestController()
val result: Future[SimpleResult] = controller.index().apply(FakeRequest())
/* assertions */
}
}
}
}
对于index() 方法,它工作得很好,不幸的是我不能对register() 做同样的事情,因为在它上面应用FakeRequest 会返回Iteratee[Array[Byte], SimpleResult] 的实例。我注意到它具有返回Future[SimpleResult] 的run() 方法,但无论我如何构建FakeRequest,它都会返回400,没有任何内容或标题。在我看来,FakeRequest 的内容完全被忽略了。我是否应该以某种方式将请求正文提供给 iteratee 然后运行它?我找不到任何示例,我该怎么做。
【问题讨论】:
-
这个运气好吗?快把我逼疯了!
标签: scala playframework specs2 playframework-2.2