我正在尝试测试使用 new 的控制器Action.async
。按照文档,我已经排除了控制器下的部分,我想测试以将特征与类型引用分开:
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()
对Iteratee[Array[Byte], SimpleResult]
. 我注意到它有run()
返回的方法,Future[SimpleResult]
但无论我如何构建FakeRequest
它都返回400
没有任何内容或标题。在我看来,内容FakeRequest
完全被忽视了。我是否应该以某种方式将请求正文提供给 iteratee 然后运行它?我找不到任何例子,我该怎么做。