我是 Scala/Play 2.1/Specs2 堆栈的新手,所以如果这个问题看起来很简单,请原谅,但是我很难编写规范来测试“字符串包含单词 'GET'”的情况。我有一个 Play 2.1 Action,它返回一个 Access-Control-Allow-Methods 标头值,例如
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS
我的规范对其他标头进行直接相等检查没有问题,但我无法弄清楚如何检查每个 GET、PUT、POST、DELETE 和 OPTIONS 的 Access-Control-Allow-Methods 标头。我预计像“必须包含(“GET”)这样的东西可以工作,但IDE在这方面会变红:
type mismatch; found : org.specs2.matcher.ContainMatcher[String] required: org.specs2.matcher.Matcher[Option[String]] SessionsSpec.scala /dm2-server/test/admin line 53 Scala Problem
我的规格看起来像...
"send 200 on OPTIONS request on valid route" in {
running(FakeApplication()) {
var fakeReq = FakeRequest("OPTIONS", "/admin/sessions")
val Some(result) = route(fakeReq)
status(result) must equalTo(OK)
header(ACCESS_CONTROL_ALLOW_ORIGIN, result) must equalTo(Some("*"))
header(ACCESS_CONTROL_ALLOW_HEADERS, result) must equalTo(Some(CONTENT_TYPE))
val expectedMethods = Seq(GET, PUT, POST, DELETE, "OPTIONS")
header(ACCESS_CONTROL_ALLOW_METHODS, result) must containAllOf(expectedMethods)
}
}
在 Specs2 中如何表达“这个字符串是否包含所有这些值”的用例?