1

私のサービスルート:

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"
  }
}
4

0 に答える 0