Я пытаюсь проверить контроллер, который использует новый 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]
. Я заметил, что у него есть метод run()
, который возвращает Future[SimpleResult]
, но независимо от того, как я строю FakeRequest
, он возвращается с 400
без какого-либо содержимого или заголовков. Мне кажется, что содержание FakeRequest
вообще не учитывается. Должен ли я кормить тело запроса так или иначе, а потом запустить его? Я не мог найти никакого примера, как я мог это сделать.