Как выполнить множественный запрос в одном модуле тестирования Play 2 specs2
У меня есть простое веб-приложение, использующее инфраструктуру Play 2. У него есть два REST API:
- /записывать
- /читать
Я хочу реализовать функциональный тест для него. Я хочу, чтобы тест вызвал /write
несколько раз, затем проверьте результат /read
,
Но route
функция возвращает Future
, и я не мог найти способ позволить specs2 ждать моего Future
,
Мой код выглядит так:
object MySpec extends Specification {
"/write * 2, then /read" in new WithApplication {
val write1 = route(app, FakeRequest(GET, '/write')).get
val write2 = route(app, FakeRequest(GET, '/write')).get
val read = route(app, FakeRequest(GET, '/read')).get
// how to chain the requests so the execute one after another, and the specs2 can wait for it?
status(read) must_==OK
}
}
1 ответ
Решение
Разве ты не можешь сделать что-то подобное?
import play.api.mvc._
import play.api.test._
import scala.concurrent.Future
object MySpec extends Specification {
"/write * 2, then /read" in new WithApplication {
val result = for{
_ <- route(app, FakeRequest(GET, '/write'))
_ <- route(app, FakeRequest(GET, '/write'))
read <- route(app, FakeRequest(GET, '/read'))
}yield{ read }
status(result) mustEqual OK
}