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