我是新来的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