我正在尝试实现一个简单的API,我可以将路径参数作为String
。这是我的测试代码:
class SimpleRouteTest extends WordSpec
with Matchers
with ScalatestRouteTest {
val routes: Route = pathPrefix("foo") {
get {
complete("GET /foo")
} ~
pathPrefix(Segment) { seg =>
get {
complete(s"GET /foo/$seg")
}
}
}
"The routes should handle" should {
"GET /foo correctly" in {
Get("/foo") ~> routes ~> check {
responseAs[String] shouldBe "GET /foo"
}
}
"GET /foo/any" in {
Get("/foo/any") ~> routes ~> check {
responseAs[String] shouldBe "GET /foo/any"
}
}
}
}
不幸的是,第二次测试失败并显示消息:
" GET / foo []"不等于" GET / foo [/ any]"
谁可以提示,我做错了什么?
由于
答案 0 :(得分:2)
这是您的代码尝试执行的操作:
/foo
GET
,请填写"GET /foo"
seg
开头,则以s"GET /foo/$seg"
~
运算符在第一个操作数处停止,因为满足所有条件(以/foo
开头并且是GET
)。您可能希望将更精确的一个作为第一个操作数传递,或者在第一个操作中指定您需要PathEnd
。