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()
FakeRequest を適用すると のインスタンスが返されるため、 で同じことを行うことはできませんIteratee[Array[Byte], SimpleResult]
。run()
返すメソッドがあることに気付きましたFuture[SimpleResult]
が、どのようにビルドしても、コンテンツやヘッダーなしFakeRequest
で返されます。400
の内容はFakeRequest
まったく無視されているように思えます。リクエストの本文を iteratee に何らかの方法でフィードしてから実行することになっていますか? どうすればそれができるかの例が見つかりませんでした。