Мой сервисный маршрут:
get(
path("add" / IntNumber / IntNumber)( (a, b) =>
complete((a + b).toString())
)
) ~
post(
path("add") (
formFields('a.as[Int], 'b.as[Int]) {
(a, b) => complete((a + b).toString())
})
)
моя спецификация:
import spray.http.FormData
class RouteDefinitionSpec
extends org.specs2.mutable.Specification
with org.specs2.ScalaCheck
with spray.testkit.Specs2RouteTest with RouteDefinition {
def actorRefFactory = system
"the route" should {
"add with get requests" in {
prop { (a: Int, b: Int) =>
Get(s"/add/$a/$b") ~> route ~> check {
responseAs[String] === s"${a+b}"
}
}
}
"add with post form data request" in {
prop { (a: Int, b: Int) =>
Post("/add", FormData(Seq("a" -> a.toString, "b" -> b.toString))) ~> route ~> check {
responseAs[String] === s"${a+b}"
}
}
}
}
}
Оба маршрута GET и POST работают правильно, если проверены в браузере. POST работает и в тесте. Что не так с моим маршрутом GET? Почему нельзя проверить? Что вызывает такую ошибку и как ее избежать?
[info] RouteDefinitionSpec
[info]
[info] the route should
[error] x add with get requests
[error] Falsified after 0 passed tests.
[error] > ARG_0: 2147483647
[error] > ARG_1: -2147483648
[error] > Request was not handled (RouteDefinitionSpec.scala:5)
[info]
[info] + add with post form data request
[info]
[info]
[info] Total for specification RouteDefinitionSpec
[info] Finished in 393 ms
[info] 2 examples, 102 expectations, 1 failure, 0 error
ОБНОВЛЕНИЕ: кажется, что это как-то связано со scalacheck, потому что следующий тест, не основанный на свойствах, также является «зеленым»:
"add test without scalacheck" in {
Get("/add/30/58") ~> route ~> check {
responseAs[String] === "88"
}
}
2147483647
и-2147483648
?IntNumber
нормально обрабатывает минимальные и максимальные значения? - person Eric   schedule 29.01.2016