我是新來的Scala/Play 2.1/Specs2堆棧,所以請原諒,如果這個問題看起來很簡單,但我有困難寫一個規範來測試「字符串包含單詞'GET'」的情況。我有一個玩2.1的行動,返回Access-控制允許的方法像頭值如何爲「a,b,c」.containsAllOf(「b」,「a」)編寫Specs2匹配器?
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
您使用的是什麼版本的scala和specs2? – cmbaxter
斯卡拉是2.10.1。如果可以相信Scala-IDE,Specs2版本是specs2_21.10.jar。 –
一個提示:不要寫'equalTo(Some(「*」))''你可以寫'beSome(「*」)' – Eric